可能重复:
What issues can I expect compiling C code with a C++ compiler?
只是好奇我是否可以使用c ++编译器编译c源代码?无论如何还有任何完全支持c99标准的编译器吗?
答案 0 :(得分:5)
C ++ 不是 C的超集。有些地方不同,这意味着某些C代码无法在C ++模式下编译。
至于C99的支持,GCC和Clang是最接近的。 Microsoft不支持C99,只关注C ++(在某些地方与C99重叠)。
答案 1 :(得分:4)
使用C ++编译器编译C代码时可能会遇到问题,除非您明确限制编译器使用C(所有C ++都知道如何操作)。如果编译器使用C ++编译C代码,那么如果在C代码中使用C ++中保留的单词,则可能会出现问题。
例如,C代码如下:
int main(void) { int class = 5; return class;}
使用C编译器(或C模式下的C ++编译器)可以正常编译,但不能使用C ++编译器进行编译。
答案 2 :(得分:3)
使用C ++编译C代码时,我可以很快想到的两个问题(可能还有更多)是转换和变量名称。例如:
char* new = malloc(20);
以上是有效的C,但在C ++中编译时会出现以下错误:
char*
分配给void*
。new
是一个关键字。是的,某些编译器确实支持C99。 GCC可能会,但我只有使用MSVC的经验,他们不支持它。