ral*_*ght 36 c c++ gcc compilation
我有一个外部提供的.cpp文件.它是C兼容代码和一些C++的混合体.C++代码只是C的一个包装器,可以利用C++的特性.
它使用#ifdef __cplusplus
宏来保护C++代码,这很棒.不幸的是,如果我尝试使用gcc进行编译,它会因为文件结束而将其视为C++.我知道gcc和g ++之间的区别 - 我不想编译为C++.
有什么方法可以强制gcc将此文件视为C文件吗?我尝试过使用eg --std=c99
,但这正确地产生了C99对C++无效的错误.
将文件重命名为.c有效,但我想尽可能避免这种情况,因为它是外部提供的,并且保留为原始副本会很好.
谢谢!
Mic*_*zek 58
该-x
选项的gcc,可以指定它后面所有的输入文件的语言:
$ gcc -x c your-file-name.cpp
Run Code Online (Sandbox Code Playgroud)
如果您只想要特殊情况下的一个文件,您可以使用-x none
关闭特殊处理:
$ gcc -x c your-filename.cpp -x none other-file-name.cpp
Run Code Online (Sandbox Code Playgroud)
(your-filename.cpp
将编译为C,同时other-file-name.cpp
将使用扩展并编译为C++)
Rob*_*edy 12
要将foo.cpp编译为C文件,可以创建一个名为foo.c的新文件,并将以下内容作为其全部内容:
#include "foo.cpp"
Run Code Online (Sandbox Code Playgroud)
现在编译foo.c而不是foo.cpp.
我们已经将其用于另一种方式(将.c文件编译为C++),以便在保留其长达十年的CVS历史记录的同时开始在某些文件中使用C++功能.此外,我们使用每个平台的本机编译器构建,而不仅仅是GCC,因此我们不必-x
为六个编译器找到等效命令,然后使我们的构建系统仅将该命令应用于某些文件.