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

问题描述 投票:0回答:3

可能重复:
使用 C++ 编译器编译 C 代码会遇到哪些问题?

只是好奇我是否可以使用c++编译器来编译c源代码?有没有完全支持c99标准的编译器?

c++ c compiler-construction
3个回答
10
投票

C++ 不是C 的超集。它们有一些不同的地方,这意味着某些 C 代码无法在 C++ 模式下编译。

对于C99的支持,GCC和Clang是最接近的。微软不支持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 的经验,他们不支持它。

© www.soinside.com 2019 - 2024. All rights reserved.