"extern" 关键字用法
"extern" keyword usage
我有以下代码片段:
#include<iostream>
int main()
{
extern int a;
printf("a = %d", a)
}
int a = 10;
上面的示例代码打印 10。我猜它应该打印垃圾值。有人可以解释一下吗?
全局变量具有静态持续时间,并且在 main
运行之前初始化静态。因此,在调用 printf
时,a
的值已经设置为 10
。
linker 将 extern int a
解析为 a
在程序执行之前的 link 时间在 main 之后声明。正如 Borgleader
所说,a
是一个全局变量,因此它在调用 main 之前初始化。
C++ 程序不是从上到下线性执行的。 main
不会在解析过程中一看到其定义就神奇地执行。
我有以下代码片段:
#include<iostream>
int main()
{
extern int a;
printf("a = %d", a)
}
int a = 10;
上面的示例代码打印 10。我猜它应该打印垃圾值。有人可以解释一下吗?
全局变量具有静态持续时间,并且在 main
运行之前初始化静态。因此,在调用 printf
时,a
的值已经设置为 10
。
linker 将 extern int a
解析为 a
在程序执行之前的 link 时间在 main 之后声明。正如 Borgleader
所说,a
是一个全局变量,因此它在调用 main 之前初始化。
C++ 程序不是从上到下线性执行的。 main
不会在解析过程中一看到其定义就神奇地执行。