can i use c++ compiler to compile c source code?

4

4
两个问题,两个答案。有时候。是的。 - ephemient
可能是重复问题:https://dev59.com/snRA5IYBdhLWcg3wsgFP(对于“任何C99编译器”部分,是的-请参见http://en.wikipedia.org/wiki/C99) - Tony Delroy
3个回答

10

C++并不是C的超集。它们之间存在差异,这意味着一些C代码在C++模式下不能编译。

至于C99的支持,GCC和Clang最接近。Microsoft不支持C99,只关注C++(在某些地方与C99重叠)。


10
你可能在使用C++编译器编译C代码时遇到问题,除非你明确限制编译器使用C语言(所有的C++编译器都知道如何做)。如果编译器使用C++来编译C代码,那么如果在C代码中使用了在C++中保留的关键字,可能会出现问题。
例如,像这样的C代码:
int main(void) { int class = 5; return class;}

可以使用C编译器(或以C模式运行的C++编译器)编译通过,但无法使用C++编译器编译。

6

我能够快速想到的两个问题(可能还有更多)是在使用C++编译C代码时会出现强制类型转换和变量名的问题。例如:

char* new = malloc(20);

上述代码是有效的C语言代码,但在C++编译时会出现以下错误:

  1. 未经显式转换,无法将char*赋值给void*
  2. new是一个关键字。

是的,一些编译器支持C99。GCC可能支持,但我只有使用MSVC的经验,他们不支持它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接