我正在编写一个C++共享库供C程序使用.但是,我有一个关于extern和的问题extern "C".
请考虑以下代码
我的头文件是这样的:
#ifdef __cplusplus
extern "C" int global;
extern "C" int addnumbers(int a, int b);
#else
extern int global;
#endif
Run Code Online (Sandbox Code Playgroud)
这完美无缺; 我只需要申报
int global;
Run Code Online (Sandbox Code Playgroud)
在我的.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不extern "C".这是为什么?这对我来说并不直观.
评论:我不认为这是重复的,因为我问的是当你将它用于变量与函数时有什么区别.