我已经看到C/C++代码使用在函数签名中声明的extern"C",并且还在将CP头包含到CPP文件中时使用.
但有些函数只是在签名之前声明extern(没有"C").
QN1:
这两种定义函数的方式是否具有相同的效果,还是它们意味着不同的东西?
对不起,如果我很傻,但我无法通过谷歌找到这种差异.
例如:
extern int someFunction( void *ret_val);
extern "C" int someFunction( void *ret_val);
Run Code Online (Sandbox Code Playgroud)
QN2:
如果函数在其签名中声明了extern,那么相应的头文件是否必须包含在extern"C"块中?
正如评论中的另一个用户所指出的那样,标记的副本并不完全满足此处的问题.我正在编辑,以便将来其他人可能不会误导成另一个问题.
在Visual Studio代码中成功编译
extern "C" char Table[256][256];
Run Code Online (Sandbox Code Playgroud)
如果我用上面的代码替换
extern char Table[256][256];
Run Code Online (Sandbox Code Playgroud)
visual studio开始给我表未解决的外部错误?