car*_*995 2 c c++ compiler-construction
可能重复:
我期望用C++编译器编译C代码有什么问题?
只是好奇我是否可以使用c ++编译器来编译c源代码?无论如何还有任何编译器完全支持c99标准吗?
除非您明确限制编译器使用 C(所有 C++ 都知道如何做),否则您可能会在使用 C++ 编译器编译 C 代码时遇到问题。如果编译器使用 C++ 来编译 C 代码,如果在 C 代码中使用在 C++ 中保留的字,您可能会遇到问题。
例如,像这样的 C 代码:
int main(void) { int class = 5; return class;}
Run Code Online (Sandbox Code Playgroud)
使用 C 编译器(或 C 模式下的 C++ 编译器)可以很好地编译,但不能使用 C++ 编译器进行编译。
使用 C++ 编译 C 代码时,我能很快想到的两个问题(可能还有更多)是类型转换和变量名。例如:
char* new = malloc(20);
Run Code Online (Sandbox Code Playgroud)
以上是有效的 C,但在 C++ 中编译时,您会收到以下错误:
char*void*没有明确的强制转换就不能分配给。new 是关键字。是的,有些编译器确实支持 C99。GCC 可能会,但我只有使用 MSVC 的经验,他们不支持它。
C++ 不是 C 的超集.有些地方它们不同,这意味着某些C代码不能在C++模式下编译.
至于C99的支持,GCC和Clang是最接近的.Microsoft不支持C99,只关注C++(在某些地方与C99重叠).