我有一个程序。
int i=10;
main()
{
extern int i;
{
int i=20;
{
const volatile unsigned i=30;
printf("%d ",i);
}
printf("%d ",i);
}
printf("%d\n",i);
}
输出: 30 20 10
当我看到这个程序时,我以为这个程序会报错。因为,我们不能创建同名的符号(变量)。即使我们在块下创建符号,它已经被创建为全局符号。
编译器如何区分同名的全局符号和局部符号?