Forum: Compiler & IDEs boolsche Werte true und false


von Slowflyer (Gast)


Lesenswert?

Hallo,

ich habe ein Problem. Bei verwendung von boolschen Werten wie true und
false gibt mir der gcc folgende Fehlermeldung:

../test.c:81: error: `false' undeclared (first use in this function)

Muss man dafür eine spezielle Header-Datei einbinden oder per #define
selbst definieren?

Gruß Slowflyer

von Slowflyer (Gast)


Lesenswert?

Nachtrag:

nachdem ich die beiden Schlüsselwörter true und false nun per define
definiert habe, kennt der compiler das Schlüsselwort bool nicht mehr.
Hm... Sehr eigenartig. Scheinbar kennt er die boolschen Datentypen
standardmäßig nicht. Kann mir da jemand mal einen Tip geben? (Am
liebsten wäre mir, dass eine bool Variable auch nur ein Bit belegt)

von Alex (Gast)


Lesenswert?

Bool gibt es halt beim avr-gcc nicht, mach dir nichts draus. Verwende
einfach unsigned char als Datentyp und die Sache passt.
Falls es beim RAM auf jedes Byte ankommt dann musst du dir Bitfelder
von Hand anlegen, dann ist die Sache aber nicht mehr performant.

von Slowflyer (Gast)


Lesenswert?

Danke erstmal für die schnelle Antwort. Ich habe zufällig die
Headerdatei stdbool.h gefunden. Damit hat sich das Problem erledigt
(erstmal). Werd es erstaml so probieren, und wenn mir mal der Speicher
langsam ausgehen sollte auf Bitfelder umsteigen.

Nochmals Danke!!!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Ich habe zufällig die
> Headerdatei stdbool.h gefunden.

Genau so schreibt es C99 vor, bool, true und false gibt es nur,
wenn man diesen Header includet -- anders als bei C++, da sind
es builtins (auch beim GCC im C++-Mode natürlich).

Guck aber mal genau hin, mir ist so, als wäre der bool da drin
ein int, also eine 16-bit-Zahl.  Eventuell willst du ja doch
lieber einen uint8_t nehmen und TRUE und FALSE dann selbst als
Makros deklarieren.

von Rolf Magnus (Gast)


Lesenswert?

Oder eben gleich C++ nehmen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Wobei dann der bool-Typ sicher genauso 16 bits ist...

von Slowflyer (Gast)


Lesenswert?

Die Überlegung mit den 16Bit ist gut. Sizeof gibt bei der stdbool.h 1
zurück. Also kann man davon ausgehen, dass der Bool-Wert ein Byte
belegt. D.h. der Umweg über eigene Definitionen kann man sich sparen.

Danke für die Anregungen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.