2016-12-09 8 views
0

stdbool.h enthält dieser Code:stdbool.h: #define true true

#if __cplusplus < 201103L 
/* Defining these macros in C++98 is a GCC extension. */ 
#define bool bool 
#define false false 
#define true true 
#endif 

Warum gcc Notwendigkeit Standard C++ Typen neu zu definieren?

+0

Die eigentliche Frage ist, warum Sie diesen Header jemals in eine C++ - Datei einfügen würden. Die ganze Sache scheint wie ausgeschlossen zu sein, wenn "__cplusplus" definiert ist. Vielleicht gibt es diese Definitionen für Rückwärtskompatibilität mit C-Programmen und/oder älteren Versionen des Compilers? –

Antwort

0

Obwohl #define fnord fnord die Art und Weise, wie der Bezeichner fnord verarbeitet wird, im Allgemeinen nicht ändert, wird #ifdef fnord das Makro wie definiert melden. Wenn ein anderer Code etwas tun könnte wie

#ifndef true 
#define true 1 
#endif 

ein #define true true Having würde dazu führen, die solche Definition zu übersprungen werden.

Verwandte Themen