C 是否支持范围解析


    #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;
}

最新更新