当我在头文件中声明函数原型时,即使我从不使用'extern'关键字,我仍可以访问程序中的所有位置。它们只对静态库很重要,或者我什么时候需要它?
答案 0 :(得分:5)
默认情况下,函数为extern
。 extern
关键字仅对变量有用。
答案 1 :(得分:2)
extern是C中的默认存储类说明符。
在变量上明确指定
extern int i;
如果它可以在模块之间共享。然后
int i;
在其他模块中不会违反ODR。
对于功能是,非常无用。
答案 2 :(得分:1)
对于函数声明,它们不是强制性的。它们仅用于声明外部全局变量:
// header
extern int foo;
// implementation (.c)
int foo;
如果没有extern
,编译器会在每次遇到它时实例化全局变量(因为包含的头文件)并且你会收到链接器错误。
此关键字的另一个用例是通过将C代码指定为C链接来使C代码兼容(这又会阻止链接器错误,即由C ++名称修改引起的错误):
#ifdef __cplusplus
extern "C" {
#endif
void foo(void);
#ifdef __cplusplus
}
#endif
答案 3 :(得分:0)
默认情况下,所有功能都是 extern ..
Extern关键字仅用于变量..