Я нашел некоторые проблемы с определением перечисления внутри структуры, я хочу иметь что-то вроде:C определение перечисления в структурах с ЬурейиМи
typedef struct
{
typedef enum { E1, E2, E3 } E;
E e;
} S;
в VS2012 У меня есть ошибки:
error C2071: 'E' : illegal storage class
error C2061: syntax error : identifier 'E'
error C2059: syntax error : '}'
I нашел объяснение C2071, но это не тот же случай: http://msdn.microsoft.com/en-us/library/deb3kh5w.aspx
НКУ-4,9 говорит:
error: expected specifier-qualifier-list before ‘typedef’
самое интересное заключается в том, что код:
typedef enum { E1, E2, E3 } E;
E e;
отлично работает в глобальном масштабе и в теле функции.
Я также попытался сделать это без ЬурейеГо, но, к сожалению, есть еще много о ошибках:
error C2011: 'E' : 'enum' type redefinition
see declaration of 'E'
error C2208: 'E' : no members defined using this type
я нашел подобную причину: http://msdn.microsoft.com/en-us/library/ms927163.aspx но я определять член типа.
Любое использование 'typedef' в объявлении структуры является синтаксической ошибкой. Что вы ожидаете от этого кода? Если вы хотите, чтобы 'typedef' отображался только внутри объявления структуры (что в действительности не очень полезно): объявления структуры не вводят новую область (и если бы они это сделали, то константы перечисления были бы недоступны из-за пределов структуры) , – mafso