C是否支持范围解析?

时间:2014-01-18 08:22:39

标签: c scope

    #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 ++编写的,那就可以了。

1 个答案:

答案 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;
}