当我在头文件中声明函数原型时,即使我从不使用“extern”关键字,我也可以在程序中的任何地方找到它们。它们只对静态库很重要,还是我什么时候需要它?
问问题
215 次
4 回答
5
函数是extern
默认的。该extern
关键字仅对变量有用。
于 2013-01-31T14:19:12.193 回答
2
extern 是 C 中的默认存储类说明符。
在变量上明确指定它
extern int i;
如果它可以在模块之间共享。然后
int i;
在其他模块中不会违反 ODR。
对于功能是的,非常没用。
于 2013-01-31T14:19:32.450 回答
1
对于函数声明,它们不是强制性的。它们仅用于声明外部全局变量:
// header
extern int foo;
// implementation (.c)
int foo;
如果没有extern
,编译器会在每次遇到全局变量时实例化它(因为包含头文件),你会得到一个链接器错误。
此关键字的另一个用例是通过将 C 代码指定为 C 链接来使 C 代码与 C++ 兼容(这再次防止了链接器错误,即由 C++ 名称修改引起的错误):
#ifdef __cplusplus
extern "C" {
#endif
void foo(void);
#ifdef __cplusplus
}
#endif
于 2013-01-31T14:20:15.777 回答
0
默认情况下,所有函数都是extern ..
extern 关键字仅用于变量。
于 2013-01-31T15:15:52.977 回答