请问C支持范围分辨率? [重复](Does C supports scope resolutio

2019-10-19 06:02发布

这个问题已经在这里有一个答案:

  • 我怎样才能获得在C阴影全局变量? 7个回答
    #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 ++编写,它工作正常。

Answer 1:

不,这是一个C ++的功能。 在C中,在内部范围声明一个变量将隐藏一个在外部范围。

如果你必须这样做,你可以使用指针来获得在外部范围,但它是一个有点的杂牌,这也不是我建议:

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


文章来源: Does C supports scope resolution? [duplicate]
标签: c scope