【发布时间】:2014-05-29 11:36:38
【问题描述】:
我有 C++ 代码,其中包含一些 C 代码
extern "C"{
...
}
int main(){
...
}
我用类似的东西编译它
g++ -std=c++11 main.cpp
用于编译我的代码的C 部分的C 标准的版本是什么?如何为我的 C sn-ps 显式设置版本?
【问题讨论】:
我有 C++ 代码,其中包含一些 C 代码
extern "C"{
...
}
int main(){
...
}
我用类似的东西编译它
g++ -std=c++11 main.cpp
用于编译我的代码的C 部分的C 标准的版本是什么?如何为我的 C sn-ps 显式设置版本?
【问题讨论】:
extern "C" 块中的代码仍编译为 C++(在您的情况下为 C++11)。 extern "C" 只是给它C 链接。
C 链接意味着可以从 C 调用块中定义的函数,声明但未定义的函数必须由 C 程序定义,否则由具有 C 链接的目标文件定义。
如果您想编写 C 代码,请用 C 编写,并使用 C 编译器。 extern "C" 用于编写可从 C 调用的 C++ 代码,或用于允许 C++ 代码调用 C(或 C ABI)代码。
【讨论】:
.c 文件并告诉您的构建系统将其编译为 C,然后链接所有内容最后在一起。