Странная ошибка компиляции в c при использовании enum - PullRequest
1 голос
/ 02 декабря 2011

Здравствуйте, в моем заголовочном файле Data.hi определите логический тип как перечисление, но получил ошибку компиляции, и я не понимаю почему:

// Data.h
// Author : Alexandre rousset

typedef enum {NO, YES} bool;

typedef struct stud {
    char    *date;          
    char    *name;  /* student name */  
} Student;

void studentInit(Student *new);
bool studentPassExam(Student *s);

Я получил эту ошибку:

include/Data.h:4: error: two or more data types in declaration specifiers
include/Data.h:4: warning: useless storage class specifier in empty declaration

Спасибо за вашу помощь.

1 Ответ

4 голосов
/ 02 декабря 2011

Ваш код прекрасно компилируется с gcc version 4.6.2.

Возможно, для вашего компилятора bool является встроенным типом.Однако в соответствии со стандартами (C89, C99) это не так.Ищите параметры в вашем компиляторе, которые обеспечивают стандартное совместимое поведение.

(На всякий случай, убедитесь, что вы используете C, а не C ++ компилятор. Однако, если вы использовали C ++ компилятор, он тоже должен был жаловаться на new. Поскольку new является ключевым словом в C ++.)

...