c语言中全局变量可以重复定义
#include <stdio.h>
int g_val;
int g_val = 1;
int main(void)
{
printf("%d\n", g_val);
return 0;
}
运行结果:1
#include <stdio.h>
int g_val = 2;
int g_val;
int main(void)
{
printf("%d\n", g_val);
return 0;
}
运行结果:2
#include <stdio.h>
int g_val = 2;
int g_val = 1;
int main(void)
{
printf("%d\n", g_val);
return 0;
}
编译报错:
global.c:4: error: redefinition of 'g_val'
global.c:3: note: previous definition of 'g_val' was here
总结:gcc编译器编译允许全局变量定义两次,其中一次必须是默认初始化,同一变量最终指向全局区的同一块内存