gpt4 book ai didi

c++ - extern"C"与 extern 的区别

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:05:24 28 4
gpt4 key购买 nike

我对整个 header 使用 extern "C" 说明符,还是为每个函数指定 extern 有区别吗?

据我所知,没有,因为只有函数和变量可以外部链接,所以当我在每个函数原型(prototype)和外部变量之前使用 extern 说明符时,我不需要使用全局 extern "C" 声明!?

示例 A:

#ifdef __cplusplus
extern "C" {
#endif

void whatever(void);

#endif

示例 B:

extern void whatever(void);

最佳答案

C++ 文件中 extern "C" 的存在允许从 C 客户端调用程序代码调用特定的 C++ 函数。

有什么区别?

很久很久以前,C 编译器仅按名称生成代码和寻址函数。它没有考虑参数。

当C++中引入重载函数时,要求extern "C" 为不同的函数指定相同的名称。例如 void f()void f(int) 是 C++ 中的两个不同函数。

C++ 编译器通过名称重整来实现这一点。它在函数名称中添加了一些与函数参数相关的信息。

extern "C" 是命令编译器“引用旧式命名约定 - 不进行重整”。

关于c++ - extern"C"与 extern 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44056461/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com