【问题标题】:can i use c++ compiler to compile c source code? [duplicate]我可以使用 c++ 编译器编译 c 源代码吗? [复制]
【发布时间】:2011-03-08 03:40:19
【问题描述】:
【问题讨论】:
标签:
c++
c
compiler-construction
【解决方案1】:
C++ 不是 C 的超集。它们有一些不同的地方,这意味着某些 C 代码将无法在 C++ 模式下编译。
至于 C99 支持,GCC 和 Clang 是最接近的。微软不支持 C99,只关注 C++(与 C99 有部分重叠)。
【解决方案2】:
除非您明确限制编译器使用 C(所有 C++ 都知道如何做),否则您可能会在使用 C++ 编译器编译 C 代码时遇到问题。如果编译器使用 C++ 编译 C 代码,如果在 C 代码中使用 C++ 中保留的字,您可能会遇到问题。
例如,像这样的 C 代码:
int main(void) { int class = 5; return class;}
使用 C 编译器(或 C 模式下的 C++ 编译器)可以正常编译,但无法使用 C++ 编译器编译。
【解决方案3】:
当使用 C++ 编译 C 代码时,我能很快想到的两个问题(可能还有更多问题)是强制转换和变量名。例如:
char* new = malloc(20);
以上是有效的C,但是在C++中编译时会出现以下错误:
-
char* 不能在没有显式转换的情况下分配给 void*。
-
new 是一个关键字。
是的,一些编译器确实支持 C99。 GCC 可能会,但我只有使用 MSVC 的经验,他们不支持它。