2013-07-01 2 views
-1

Я woundering следующего кода:Какова область вложенной структуры?

#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; 
} 

Если объем распорки test2, test3 и перечисления существ в пределах структуры test1 но компилятор не сообщать какую-либо ошибки, кстати компилятор MinGW GCC.

ответ

1

В C такой код допускается, поскольку все типы объявляются в одном пространстве имен.

В C++ компилятор должен произвести ошибку, так как struct test2 объявлен в области struct test1. В C++ ваша переменная должна быть объявлена ​​следующим образом:

test1::test2 hsd; 
Смежные вопросы