gcc kennt auf einmal bool nicht? Bis jetzt kannte mein gcc bool
-
Ich habe folgendes (und recht seltsames) Problem:
Ich programmiere seit ca einem Jahr mit gcc (gcc 3.3.4) unter linux.
Soweit ich mich erinnern kann hat gcc noch NIE Probleme mit bool gehabt.
Und jetzt auf einmal? Jetzt meckert gcc rum! Dagegen hat g++ keine probleme den folgenden code zu kompilieren.int main() { bool abc = true; return 0; }
das meldet der gcc:
main.c: In function `main': main.c:6: error: `bool' undeclared (first use in this function) main.c:6: error: (Each undeclared identifier is reported only once main.c:6: error: for each function it appears in.) main.c:6: error: parse error before "abc"
bool undeclared???? Was ist los?
-
ANSI C kennt kein bool, C++ schon... gcc compiliert C, g++ compiliert C++...
-
C99 kennt auch _Bool bzw. bool mit stdbool.h.
-
LordJaxom schrieb:
ANSI C kennt kein bool, C++ schon... gcc compiliert C, g++ compiliert C++...
Genau das dürfte der Punkt sein. Als Lösung mußt du dem Compiler erklären, was "bool" ist, z.B.:
typedef enum {false,true} bool;
Und wenn damit der g++ Probleme hast, mußt du es selektiv ausblenden:
#ifndef __cplusplus typedef enum {false,true} bool; #endif
-
CStoll schrieb:
LordJaxom schrieb:
ANSI C kennt kein bool, C++ schon... gcc compiliert C, g++ compiliert C++...
Genau das dürfte der Punkt sein. Als Lösung mußt du dem Compiler erklären, was "bool" ist, z.B.:
typedef enum {false,true} bool;
Sowas ist aber Unsinn, zumindest wenn man sich innerhalb von C99 bewegt. TactX hat ja schon alles gesagt. _Bool ist ein _echter_ Boolean Typ. Und damit man den in gewohnter Weise als bool verwenden kann, bindet man <stdbool.h> ein. Mehr gibt es dazu eigentlich nicht zu sagen.