#include <stdio.h>
/* global variable declaration */
int g = 20;
int main ()
{
/* local variable declaration */
int g = 10;
printf ("value of g = %d %dn", g,::g);
return 0;
}
当我尝试运行此程序时。它抛出错误main.c:11:39: error: expected expression before ':' token
printf ("value of g = %d %dn", g,::g);
。但如果它是用C++写的,它就可以正常工作。
不,这是一个C++功能。在 C 中,在内部作用域中声明变量将隐藏外部作用域中的变量。
如果你必须这样做,你可以使用指针来进入外部范围,但这有点笨拙,不是我推荐的:
#include <stdio.h>
int g = 20;
int main () {
int *pGlobalG = &g;
int g = 10;
printf ("value of g = %d %dn", g, *pGlobalG);
return 0;
}