"extern"关键字用法
"extern" keyword usage
我有以下代码片段:
#include<iostream>
int main()
{
extern int a;
printf("a = %d", a)
}
int a = 10;
以上示例代码打印 10.我的猜测是它应该打印垃圾值。有人可以解释一下吗?
全局变量具有静态持续时间,静态变量在运行main
之前初始化。因此,a
已将其值设置为在调用printf
时10
。
链接器解析extern int a
为在程序执行之前在链接时在 main 之后声明的a
。正如Borgleader
所说,a
是一个全局变量,因此它在调用 main 之前初始化。
C++程序不是从上到下线性执行的。 main
在解析过程中看到其定义后,不会神奇地执行。
相关文章:
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- 为什么在全局范围内使用"extern int a"似乎不行?
- 这个指针在c++中的用法
- 如何使用extern类
- 当C++中需要自动删除时,这是静态的正确用法吗?
- 自动重复 extern "C"函数中的类构造函数采用的相同参数
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- libstdc++ 文件系统中未初始化的用法?
- 复制和交换习惯用法与移动操作之间的交互
- 使用说明符 extern 声明的C++中的标识符链接
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 命名参数习惯用法和(抽象)基类
- 省略号在C++中的所有用法
- () 在 C++ 11 中的特殊而奇怪的用法?
- "extern"关键字用法
- extern关键字在C++中的用法
- extern 和inline 的用法
- extern关键字和多个翻译单元的用法
- c++中extern的用法
- c++用法:extern在函数前面