【问题标题】:can i use c++ compiler to compile c source code? [duplicate]我可以使用 c++ 编译器编译 c 源代码吗? [复制]
【发布时间】:2011-03-08 03:40:19
【问题描述】:

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

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

【问题讨论】:

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

      1. char* 不能在没有显式转换的情况下分配给 void*
      2. new 是一个关键字。

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

      【讨论】:

        猜你喜欢
        • 2014-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多