嵌套结构的范围是什么?

时间:2013-07-01 13:06:52

标签: c struct enums scope nested

我正在扭转以下代码:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  struct test1
  {
    struct test2
    {
      struct test3
      {
        enum TokenType
        {
          COMMA_TOKEN, EOF_TOKEN,
        } token_value;
      } b;
    } c;
  };

  struct test2 hsd;
  hsd.b.token_value = 2;

  return 0;
}

strut test2,test3和enum的范围是否应该在struct test1中?但是编译器没有报告任何错误,顺便说一下编译器是MinGW GCC。

1 个答案:

答案 0 :(得分:1)

在C中允许这样的代码,因为所有类型都在单个名称空间中声明。

在C ++编译器中应该产生错误,因为struct test2在struct test1的范围内声明。在C ++中,您的变量应声明如下:

    test1::test2 hsd;