c - 外部关键字的用法



当我在头文件中声明函数原型时,我可以在程序中的任何位置访问它们,即使我从不使用"extern"关键字。它们是否仅对静态库重要,或者何时需要它?

默认情况下

extern函数。 extern 关键字仅对变量有用。

extern 是 C 语言中的默认存储类说明符。

在变量上显式指定它

extern int i;

如果可以在模块之间共享。然后

int i;

在其他模块中不会违反ODR。

对于功能是的,毫无用处。

对于函数声明,它们不是必需的。它们仅用于声明外部全局变量:

// 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

默认情况下,所有函数都是 extern

Extern关键字仅用于变量。

最新更新