我正在伤害以下代码:
#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/