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.
广告