我正在编写一个 C++ 共享库供 C 程序使用。但是,我有一个关于extern
and的问题extern "C"
。
考虑以下代码
我的头文件是这样的:
#ifdef __cplusplus
extern "C" int global;
extern "C" int addnumbers(int a, int b);
#else
extern int global;
#endif
这工作得很好;我只需要声明
int global;
在我的 .cpp 或我的 .c 文件中。但是,我不明白的是:
extern "C"
和这里有什么区别extern
?我尝试发表评论extern "C" int global
并且它有效!为什么?
我知道那extern "C"
是用来制作C链接的。这就是为什么我有extern "C" int addnumbers(int,int)
. 换句话说,如果我想编写一个要在 C 程序中使用的 C++ 函数,我会编写extern "C"
. 现在,全局变量呢?我猜这里的情况有所不同?我希望 C 程序使用名为 的 C++ 变量global
,但我可以使用extern
not extern "C"
。这是为什么?这对我来说并不直观。
评论:我不认为这是重复的,因为我问的是当你将它用于变量和函数时有什么区别。