반응형
CBuilder Project 에는 c 와 cpp 모두 참여 시킬 수 있습니다.
그러나 컴파일러는 서로 다르게 컴파일 합니다.

c 는 말그대로 c 컴파일을 수행하고요 cpp 는 cpp 컴파일을 수행합니다.
c 와 cpp 는 구분상 별 차이는 없으나
cpp 는 class 구문이 추가 되었다는것이죠.
기타 다른 차이점도 다소 있겠지만요.

c source 에서는 vcl.h 를 사용못한다는 것도 결론적인 차이겠군요.

사실 더 큰차이는
서로 함수의 선언 부분입니다.
a.cpp 와 b.c 가 있다고 가정하고 두개 모두 같은 프로젝트에 있다고 가정하죠.

a.cpp 에
void acpp() 함수가 있다고 가정하고

b.c 에
void bc() 라는 함수가 있다고 가정하면

a.cpp 에서는 bc() 함수를 호출 못합니다.
또한 b.c  에서도 acpp() 함수를 호출 못합니다.

단..
함수를 이렇게 선언하면 서로 호출 할 수 있습니다.
extern "C"{
   void acpp();
   void bc();
};

컴파일러는 함수를 컴파일 할때 함수명 그대로 가지지 않습니다.
변형을 하게 되는데요.. c 에서와 cpp 에서는 서로 다릅니다.
c 에서는 cpp 형태를 못만들기 때문에 cpp 에서 c 형식으로 만드는 것 이죠.

cpp 에서도 c 구문을 다 쓰실수 있으니까 가능하면 cpp 로 통일해서 (저같은 경우 이런상황이라면
모든 c를 cpp 라 rename 하는 경우가 많습니다) 사용하시는게 좋을것 같습니다.

즉 CBuilder 는 확장자를 이용해 컴파일러를 선택 합니다. pas 는 pascal , c 는 c , cpp 는 cpp죠
같은 컴파일러라도 내부적으로 컴파일은 다른것 입니다.

+ Recent posts