C++ 中的 extern 存储类


extern 存储类说明符允许您声明多个源文件可以使用的对象。extern 声明使描述的变量可供当前源文件的后续部分使用。此声明不会替换定义。该声明用于描述外部定义的变量。

extern 声明可以出现在函数外部或块的开头。如果声明描述了一个函数,或者出现在函数外部并描述了一个具有外部链接的对象,则关键字 extern 是可选的。

如果标识符的声明已存在于文件范围内,则在块中找到的相同标识符的任何 extern 声明都引用同一个对象。如果在文件范围内不存在标识符的其他声明,则该标识符具有外部链接。

C++ 将 extern 存储类说明符的使用限制在对象或函数的名称上。对类型声明使用 extern 说明符是非法的。extern 声明不能出现在类范围内。

您可以按如下方式使用 extern 关键字在文件之间共享变量:

file3.h

extern int global_variable;  /* Declaration of the variable */

file1.c

#include "file3.h"  /* Declaration made available here */
#include "prog1.h"  /* Function declarations */
/* Variable defined here */
int global_variable = 37;    /* Definition checked against declaration */

int increment(void) {
   return global_variable++;
}

file2.c

#include "file3.h"
#include "prog1.h"
#include <stdio.h>

void use_it(void)
{
   printf("Global variable: %d\n", global_variable++);
}

stackoverflow 上的以下问题完全抓住了 extern 关键字的本质:https://stackoverflow.com/questions/1433204/how-do-i-use-extern-to-share-variables-between-source-files.


更新于: 2020 年 2 月 10 日

3K+ 次查看

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告