Я пытаюсь скомпилировать свой проект с разными компиляторами. У меня есть стабильная скомпилированная версия проекта, компилируемая без каких-либо ошибок с компилятором ARM 4.41. Я хочу скомпилировать точно такой же исходный код с компилятором ARM 5 и компилятором Win64. Как бы то ни было, без каких-либо изменений в исходном коде, просто переключив компилятор с ARM 4.41 на ARM 5 && ARM 4.41 в Win64 я получаю следующую ошибку с typedef.
Я не в состоянии понять это, почему это ведет себя так ..?
Заголовочный файл с typedef’s — a_stdtypes.h
#define _STD_TYPE_H
typedef unsigned char bool; // Error #84: invalid combination of type specifiers
typedef unsigned char bit8;
typedef unsigned short bit16;
typedef unsigned long bit32;
Это не законный код C ++. bool
является зарезервированным ключевым словом языка — тип. Вы не можете переопределить его значение. Это был бы законный код C, хотя.
Я думаю, это было написано, потому что кто-то хочет определить bool для C, а кто-то другой хочет использовать его из C ++.
более подходящее решение — использовать макрос cplusplus, например так:
#ifndef __cplusplus
typedef unsigned char bool;
#endif
typedef unsigned char bit8;
typedef unsigned short bit16;
typedef unsigned long bit32;