Зависимая от компилятора ошибка с typedef

Я пытаюсь скомпилировать свой проект с разными компиляторами. У меня есть стабильная скомпилированная версия проекта, компилируемая без каких-либо ошибок с компилятором 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;

1

Решение

Это не законный код C ++. bool является зарезервированным ключевым словом языка — тип. Вы не можете переопределить его значение. Это был бы законный код C, хотя.

3

Другие решения

Я думаю, это было написано, потому что кто-то хочет определить bool для C, а кто-то другой хочет использовать его из C ++.

более подходящее решение — использовать макрос cplusplus, например так:

#ifndef __cplusplus
typedef unsigned char  bool;
#endif
typedef unsigned char  bit8;
typedef unsigned short bit16;
typedef unsigned long  bit32;
1

По вопросам рекламы [email protected]