c - 嵌套结构的范围是什么?

标签 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。

最佳答案

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

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

    test1::test2 hsd;

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

相关文章:

c - Berkeley套接字通信、发送和接收结构

ruby-on-rails - rails_admin gem 破坏了 Rails 4.1 中引入的枚举属性

C 将字符串传递给函数问题

c - 使用 C 语言的文本文件登录系统

c - Visual Studio 2008 中的符号表条目

c++ - 用户代码可以安全地使用结构填充吗?

c++ - 关于强类型枚举前向声明

c# - 什么会阻止在 C# 语言中向枚举添加属性?

.net - 在 C# 中使用 native DLL

c - 无法从链表中删除最低值