Код: Выделить всё
#ifndef TRUE
# define TRUE (0 == 0)
#endif
#ifndef FALSE
# define FALSE (0 != 0)
#endif
typedef uint32_t bool32;
Код: Выделить всё
bool32 h = TRUE;
if(h==TRUE){
}
if(h==FALSE){
}
1>[имя файла/строка): предупреждение C4805: '==': небезопасное сочетание типа 'bool32' и типа 'bool' в работе
Но только для сравнения TRUE . Сравнение FALSE не выдает предупреждение.
Я также проверил предварительно обработанные файлы, чтобы убедиться, что используется приведенное выше определение TRUE и FALSE. и не другой. Выглядит нормально.
Есть ли объяснение, почему предупреждение появляется только в случае TRUE и как избежать этого предупреждения? И еще вопрос: Почему компилятор не предупреждает в режиме C?
Подробнее здесь: https://stackoverflow.com/questions/263 ... lue-to-tru