This question already has answers here:
Nested structures in C and C++
                                
                                    (4个答案)
                                
                        
                                6年前关闭。
            
                    
我正在伤害以下代码:

#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和枚举的范围是否应该在struct test1内?

最佳答案

在C语言中,由于所有类型都在单个名称空间中声明,因此允许使用此类代码。

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

    test1::test2 hsd;

关于c - 嵌套结构的范围是什么? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17405213/

10-11 15:45