我正在扭转以下代码:
#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。
答案 0 :(得分:1)
在C中允许这样的代码,因为所有类型都在单个名称空间中声明。
在C ++编译器中应该产生错误,因为struct test2在struct test1的范围内声明。在C ++中,您的变量应声明如下:
test1::test2 hsd;