跳转到内容

C++ 编程

来自维基教科书,开放的书籍,开放的世界

extern 关键字告诉编译器一个变量是在另一个源模块(当前作用域之外)定义的。然后链接器找到这个实际声明并设置 extern 变量指向正确的位置。由 extern 语句描述的变量不会分配任何空间,因为它们应该在其他地方正确定义。如果一个变量被声明为 extern,而链接器没有找到它的实际声明,它将抛出一个“未解析的外部符号”错误。

示例

extern int i;
声明存在一个名为i 的 int 类型的变量,定义在程序的某个地方。
extern int j = 0;
定义一个变量j具有外部链接;extern 关键字在这里是多余的。
extern void f();
声明存在一个函数f不带参数且没有返回值,定义在程序的某个地方;extern 是多余的,但有时被认为是好的风格。
extern void f() {;}
定义函数f()在上面声明;同样,extern 关键字在这里在技术上是多余的,因为外部链接是默认的。
extern const int k = 1;
定义一个常量int k值为1,并且具有外部链接;extern是必需的,因为const变量默认具有内部链接。

extern 语句经常用于允许数据跨越多个文件的范围。

当应用于函数声明时,附加的 "C" 或 "C++" 字符串文字将在使用相反语言编译时更改名称修饰。也就是说,extern "C" int plain_c_func(int param); 允许 C++ 代码执行 C 库函数 plain_c_func。

华夏公益教科书