关于extern "C"声明的几种写法的疑惑
我正在用一个c静态库,于是最早我在cpp文件中声明为:
extern "C"
{
unsigned long func1(void);
unsigned long func2(void);
void *ptr;
short int value;
}
编译通过,但运行总得不到预期的结果,
然后我改成:
extern "C" unsigned long func1(void);
extern "C" unsigned long func2(void);
extern "C" void *ptr;
extern "C" short int value;
结果发生链接错误
然后我将上述四行加入到相应的.h头文件中,仍然是连接错误
又将变量声明的两行:
extern "C" void *ptr;
extern "C" short int value;
放在.cpp文件中,同样不对
将cpp文件中的变量声明改为:
extern "C"
{
void *ptr;
short int value;
}
编译,链接通过,运行也正确无误.
我又试了将头文件中的函数声明改为
extern "C"
{
unsigned long func1(void);
unsigned long func2(void);
}
运行也是正确的.
现在我可糊涂了,哪位能够告诉我:
extern "C" 在头文件和cpp文件中的用法,作用有什么不同呢?