"extern"关键字用法

"extern" keyword usage

本文关键字:用法 extern 关键字      更新时间:2023-10-16

我有以下代码片段:

 #include<iostream>
 int main()
 {
     extern int a;
     printf("a = %d", a)
 }
 int a = 10;

以上示例代码打印 10.我的猜测是它应该打印垃圾值。有人可以解释一下吗?

全局变量具有静态持续时间,静态变量在运行main之前初始化。因此,a已将其值设置为在调用printf10

链接器解析extern int a为在程序执行之前在链接时在 main 之后声明的a。正如Borgleader所说,a是一个全局变量,因此它在调用 main 之前初始化。

C++程序不是从上到下线性执行的。 main在解析过程中看到其定义后,不会神奇地执行。