extern“C”和extern之间的区别
这个问题在这里已经有了答案:
extern“C”只是表示可以使用C或Cpp编译器来编译以下代码块。 这是在您混合使用C / C ++代码并且需要跟踪语言特定功能时完成的。 以一种更加怪异的方式,C链接变得与Cpp编译器兼容。
代码可以是从变量/ typedef到全功能/模块声明的任何内容。
但是,如果你这样做:
extern char c; // same goes true for extern int foo()
这意味着你说“我正在使用char c,它有一个在这个文件外部的声明”。 更像是在搜索路径中的某个其他模块中。 这隐含地是全球性的。 在运行时,如果c发生了变化,则变化无处不在。 这是提供您的编译器指令,如-Iinclude_file_dirs -Ssource_file_dirs等被正确提供(在GCC或g ++上)。 使用功能强大的IDE(如Visual Studio 2010或更高版本),您可以非常轻松地完成这些任务。
“extern”是一个关联关键字。 您可以将它与“C”结合用于编译器特定的连接指令。
extern“C”禁用名称修改。 它将允许您的C ++代码从C编译器编译的库中调用函数
extern "C" int someFunction( void *ret_val);
会让someFunction
有C连接。