使用extern关键字

时间:2013-01-31 14:16:00

标签: c gcc c99 extern

当我在头文件中声明函数原型时,即使我从不使用'extern'关键字,我仍可以访问程序中的所有位置。它们只对静态库很重要,或者我什么时候需要它?

4 个答案:

答案 0 :(得分:5)

默认情况下,函数为externextern关键字仅对变量有用。

答案 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关键字仅用于变量..