C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[25652] Re:C와 C++의 차이랍니다.
최준호.스페로 [sparrow] 919 읽음    2003-05-19 09:30
안녕하세요 스페로 입니다.

VC++은 잘 모르겟고요

C++빌더에서 콘솔위자드시 C를 선택 하느냐?
또는 C++을 선택하느냐에서 (자세히 보시면 Unit1.Cpp 이냐 Unit1.C 이냐가 에디터 창에 결정되지요)

볼랜드 C++빌더의 컴파일러는 C로 컴파일 하느냐 C++컴파일을 하느냐를 결정 합니다.

C는 변수의 선언을 위쪽에 해야 하는 규칙이 있습니다.

예를 들어 main()함수가 잇다고 할때

main에서 사용할 함수는

main()
{
이지지점에 변수 선언...

그이후 변수의 사용이나 if / for등에 문장
}

반면 C++은 변수의 선언위치가 자유롭죠...

VC++은 무조건 C++로 간주 하나 봅니다.

VC가 아니고  VC++이니까...

그리고 추가로 태스트 해봣는데염

볼랜드 BCC32 커맨드라인 컴파일러는 자동으로 C와 C++의 구분을 확장자로 합니다.

.C이면 엄격하게 C로 컴파일하고

.CPP이면 C++로 컴파일 합니다.

그럼 즐거운 하루 되세염



김진우 님이 쓰신 글 :
:   기수정렬입니다. 임의의 레코드를 생성하여 레코드의 크기를 입력받아 데이터를 기수정렬을 이용해서 정렬시킨다음에 출력하는 소스입니다.
:   문제는 비주얼씨에서는 실행이되지만 볼랜드에서는 에러가 납니다.
:   에러메세지는 Declaration is not allowed here라는 에러메세지이구요 두군데에서 에러가 납니다. 왜 이런 에러가 날까요?
:
:   #include<stdio.h>
: #include<stdlib.h>
: #include<malloc.h>
: #include <time.h>
: #define BINS 10
: #define DATA 249-DIGIT
: #define DIGIT 3
: clock_t a, b;
:
: typedef struct record
: {
:     int key[DIGIT];
:     int data[DATA] ;
:     char character[30];
:     struct record *link;
: } record;
:
: record *first=NULL;
:
: record *radix_sort(record *ptr) ;
:
: int main()
: {
:
:         int i;
:     int num ;
:     record * temp = NULL ;
:     printf ("input number:") ;
:     scanf ("%d", &num) ;
:     srand((unsigned)time(NULL));
:     while (num--)
:     {
:         temp = (record *) malloc (sizeof (record)) ;
:         for ( i = 0; i < DIGIT; i++)
:             temp->key[i] =rand () % 10 ;
:         for (i = 0; i < 30; i++)
:             temp->character[i] = rand () % 26 + 'a' ;
:         temp->link = NULL ;
:
:         if (!first)
:             first = temp ;
:         else
:         {
:             record * m = first ;
:             while (m->link)
:                 m = m->link ;
:             m->link = temp ;
:         }
:     }
:
:     printf ("not sorted\n") ;
:     a=clock();
:     이부분에서 에러---->record *p = first ;
:
:     while (p)
:     {
: //        printf ("%d%d%d\n", p->key[0], p->key[1], p->key[2]) ;
:         printf ("%d%d%d%s\n", p->key[0], p->key[1], p->key[2], p->character) ;
:         p = p->link ;
:     }
:
:     printf("\n\n");
:         p = radix_sort (first) ;
:     printf ("sorted\n") ;
:
:
:     b=clock();
:     while (p)
:     {
: //        printf ("%d%d%d\n", p->key[0], p->key[1], p->key[2]) ;
:         printf ("%d%d%d%s\n", p->key[0], p->key[1], p->key[2], p->character) ;
:         p = p->link ;
:     }
:     printf("\n");
:     printf("%f", ((double)(b-a)/CLK_TCK));
:     printf("\n");
:
:     return 0;
: }
:
:
: record *radix_sort(record *ptr)
: {
:     int i,j,digit;
:     record *bottom[BINS], *up[BINS];
:
:     for(i=DIGIT-1; i>=0; i--)
:     {
:         for(j=0; j<BINS; j++)
:             bottom[j]=up[j]=NULL;
:         while(ptr)
:         {
:             digit=ptr->key[i];
:             if(!bottom[digit])
:                 bottom[digit]=ptr;
:             else
:                 up[digit]->link=ptr;
:             up[digit]=ptr;
:             ptr=ptr->link;
:         }
:         ptr=NULL;
:        
:         for(j=BINS-1; j>=0; j--)
:         {
:             if(bottom[j])
:             {
:                 up[j]->link=ptr;
:                 ptr=bottom[j];
:             }
:         }
:
:         이 부분---->record * t = ptr ;
: /*        while (t)
:         {
:             printf ("%d%d%d, ", t->key[0], t->key[1], t->key[2]) ;
:             t = t->link ;
:         }
:         getchar () ;*/
:         printf ("\n") ;
:     }
:    
:     return ptr;
: }
:

+ -

관련 글 리스트
25646 기수정렬 소스인데 비주얼씨에는 되는데 볼랜드씨에서는 에러가 납니다. 김진우 1176 2003/05/19
25652     Re:C와 C++의 차이랍니다. 최준호.스페로 919 2003/05/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.