#include <stdio.h>
/* global variable declaration */
int g = 20;
int main ()
{
/* local variable declaration */
int g = 10;
printf ("value of g = %d %d\n", g,::g);
return 0;
}
当我尝试运行此程序时。抛出错误main.c:11:39: error: expected expression before ':' token
printf ("value of g = %d %d\n", g,::g);
。但如果它是用C ++编写的,那就可以了。
答案 0 :(得分:3)
不,这是一个C ++功能。在C中,在内部范围中声明变量将隐藏外部范围中的变量。
如果必须这样做,你可以使用指针来获取外部范围,但它有点像kludge而不是我推荐的东西:
#include <stdio.h>
int g = 20;
int main () {
int *pGlobalG = &g;
int g = 10;
printf ("value of g = %d %d\n", g, *pGlobalG);
return 0;
}