我可以使用c ++编译器来编译c源代码吗?

时间:2011-03-08 03:40:20

标签: c++ c compiler-construction

  

可能重复:
  What issues can I expect compiling C code with a C++ compiler?

只是好奇我是否可以使用c ++编译器编译c源代码?无论如何还有任何完全支持c99标准的编译器吗?

3 个答案:

答案 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 ++中编译时会出现以下错误:

    如果没有明确的演员,则无法将
  1. char*分配给void*
  2. new是一个关键字。

  3. 是的,某些编译器确实支持C99。 GCC可能会,但我只有使用MSVC的经验,他们不支持它。