stdbool.h
содержит этот код:
#if __cplusplus < 201103L
/* Defining these macros in C++98 is a GCC extension. */
#define bool bool
#define false false
#define true true
#endif
Почему gcc нужно переопределять стандартные типы C++?
stdbool.h
содержит этот код:
#if __cplusplus < 201103L
/* Defining these macros in C++98 is a GCC extension. */
#define bool bool
#define false false
#define true true
#endif
Почему gcc нужно переопределять стандартные типы C++?
Хотя #define fnord fnord
обычно не меняет способ обработки идентификатора fnord
, это заставит #ifdef fnord
сообщать о макросе, как он определен. Если другой код может сделать что-то вроде
#ifndef true
#define true 1
#endif
Наличие #define true true
приведет к тому, что такое условное определение будет пропущено.
__cplusplus
. Может быть, эти определения предназначены для обратной совместимости с программами на C и/или более старыми версиями компилятора? - person Cody Gray   schedule 09.12.2016