2011-03-08 4 views
1

가능한 중복 :
What issues can I expect compiling C code with a C++ compiler?나는 C++ 컴파일러를 사용하여 C 소스 코드를 컴파일 할 수 있습니까?

나는 완전히 C99 표준을 아직 지원 어떤 컴파일러가 어쨌든 ?? C 소스 코드를 컴파일하는 C++ 컴파일러의 사용을 만들 수 있는지 그냥 궁금

? ?

+4

두 개의 질문, 두 개의 대답. 때때로. 예. – ephemient

+0

가능한 복제본 : http://stackoverflow.com/questions/861517 ("any c99 compiler"부분에 대해서는 yes - http://en.wikipedia.org/wiki/C99 참조) –

답변

5

C++는 이 아니며은 C의 상위 집합입니다. 서로 다른 부분이 있으므로 일부 C 코드는 C++ 모드로 컴파일되지 않습니다.

C99 지원의 경우 GCC와 Clang이 가장 근접합니다. Microsoft는 C99를 지원하지 않으며 C++에만 초점을 맞추고 있습니다 (C99와 겹칩니다).

3

컴파일러에서 C를 사용하도록 명시 적으로 제한하지 않는 한 (모든 C++에서 수행 방법을 알고있는 경우) C 코드를 컴파일하는 데 문제가있을 수 있습니다. 컴파일러가 C++을 사용하여 C 코드를 컴파일하는 경우 C 코드에서 C++로 예약 된 단어를 사용하면 문제가 발생할 수 있습니다. 이 같은 예를 들어

, C 코드 :

int main(void) { int class = 5; return class;} 

는 C 컴파일러 (C 모드 또는 C++ 컴파일러)와 미세 컴파일하지만, C++ 컴파일러로 컴파일되지 않습니다.

2

C++을 사용하여 C 코드를 컴파일 할 때 발생할 수있는 두 가지 문제는 캐스팅과 변수 이름입니다. 예를 들면 :

char* new = malloc(20); 

위이다 유효한 C,하지만 당신은 다음과 같은 오류를 얻을 것 C++로 컴파일 할 때 :

  1. char*가 명시 적 캐스트없이 void*에 할당 할 수 없습니다.
  2. new은 (는) 키워드입니다.

예, 일부 컴파일러는 C99를 지원하지. GCC 아마,하지만 난 경험이 MSVC를 사용하고 그들은 그것을 지원하지 않습니다.

관련 문제