나는 완전히 C99 표준을 아직 지원 어떤 컴파일러가 어쨌든 ?? C 소스 코드를 컴파일하는 C++ 컴파일러의 사용을 만들 수 있는지 그냥 궁금가능한 중복 :
What issues can I expect compiling C code with a C++ compiler?나는 C++ 컴파일러를 사용하여 C 소스 코드를 컴파일 할 수 있습니까?
? ?
나는 완전히 C99 표준을 아직 지원 어떤 컴파일러가 어쨌든 ?? C 소스 코드를 컴파일하는 C++ 컴파일러의 사용을 만들 수 있는지 그냥 궁금가능한 중복 :
What issues can I expect compiling C code with a C++ compiler?나는 C++ 컴파일러를 사용하여 C 소스 코드를 컴파일 할 수 있습니까?
? ?
C++는 이 아니며은 C의 상위 집합입니다. 서로 다른 부분이 있으므로 일부 C 코드는 C++ 모드로 컴파일되지 않습니다.
C99 지원의 경우 GCC와 Clang이 가장 근접합니다. Microsoft는 C99를 지원하지 않으며 C++에만 초점을 맞추고 있습니다 (C99와 겹칩니다).
컴파일러에서 C를 사용하도록 명시 적으로 제한하지 않는 한 (모든 C++에서 수행 방법을 알고있는 경우) C 코드를 컴파일하는 데 문제가있을 수 있습니다. 컴파일러가 C++을 사용하여 C 코드를 컴파일하는 경우 C 코드에서 C++로 예약 된 단어를 사용하면 문제가 발생할 수 있습니다. 이 같은 예를 들어
, C 코드 :
int main(void) { int class = 5; return class;}
는 C 컴파일러 (C 모드 또는 C++ 컴파일러)와 미세 컴파일하지만, C++ 컴파일러로 컴파일되지 않습니다.
C++을 사용하여 C 코드를 컴파일 할 때 발생할 수있는 두 가지 문제는 캐스팅과 변수 이름입니다. 예를 들면 :
char* new = malloc(20);
위이다 유효한 C,하지만 당신은 다음과 같은 오류를 얻을 것 C++로 컴파일 할 때 :
char*
가 명시 적 캐스트없이 void*
에 할당 할 수 없습니다.new
은 (는) 키워드입니다. 예, 일부 컴파일러는 C99를 지원하지. GCC 아마,하지만 난 경험이 MSVC를 사용하고 그들은 그것을 지원하지 않습니다.
두 개의 질문, 두 개의 대답. 때때로. 예. – ephemient
가능한 복제본 : http://stackoverflow.com/questions/861517 ("any c99 compiler"부분에 대해서는 yes - http://en.wikipedia.org/wiki/C99 참조) –