第1个回答 2009-05-11
外部连接符号
通常是在定义接口的时候这样使用的
这样的一个声明写在头文件内,供其他文件包含. 这时候extern表示函数的实现部份不在文件内部,在连接的时候统一由连接器处理.
编译器通常会假定编译时候找不到实现部份的函数为extern形式.
当然,加了extern也可以在该文件内写实现
第2个回答 2009-05-11
表示是外部的, 不在这个编译单元里定义
对函数来说没必要写这个. 写不写这个都是extern的, 除非要指定导出格式, 最常见的就是多种语言混合编程经常用到 extern "C" 。
而且也不是说你写了extern就可以在别的什么文件里用它了。 每个编译单元都必须遵守“先声明后使用”的原则
第3个回答 2019-08-22
1.
这个代码是别人写的吧!
应该还有一个附带一个库文件,这样做的目的是为了让他的代码既能用于C语言代码,也能用于C++代码。
2.
#ifdef
__cplusplus
//
如果用C++编译器编译
extern
"C"
{
//
则添加这个修饰符
#endif
//
条件语句结束
void
go();
#ifdef
__cplusplus //
如果用C++编译器编译
} //
则添加一个右大括号
#endif //条件语句结束
第4个回答 2019-08-27
c和c++是两种语言,虽然名字里面都有个c
你在c++里去调用另一种语言的库,那当然是要做特殊的处理
通过条件编译可以把一些代码隐藏掉,你把那些隐藏掉的代码删掉再看,括号还是成对的。