我是否使用有什么区别extern "C"
整个标头的说明符,或指定extern
对于每个功能?
据我所知,没有,因为只有函数和变量可以外部链接,所以当我使用extern
每个函数原型和外部变量之前都有说明符,我不需要使用全局extern "C"
宣言!?
示例A:
#ifdef __cplusplus
extern "C" {
#endif
void whatever(void);
#endif
示例B:
extern void whatever(void);
的存在extern "C"
在 C++ 文件中允许从 C 客户端调用者代码调用特定的 C++ 函数。
有什么不同?
很久很久以前,C 编译器仅通过名称生成代码和寻址函数。
没有考虑参数。
当C++中引入重载函数时,extern "C"
需要为不同的函数指定相同的名称。例如无效f()
and void f(int)
是 C++ 中的两个不同的函数。
C++ 编译器通过名称修改来实现这一点。它在函数名称中添加了一些与函数参数相关的信息。
extern "C"
是一个命令编译器“参考旧式命名约定 - 不进行修改”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)