007
29.08.2007, 20:15 Uhr
cfx
|
Zitat: |
bool ist nur dann char, wenn die obige Präprozessorbedingung nicht erfüllt ist.
|
Gut, okay, das sehe ich selber. Das müsste dann aber bedeuten, dass der Datentyp bool (intern) im GCC eindeutig definiert ist (Wo auch immer das sein soll - gibt's einen Header oder besser Quelltextdatei, der/die die Datentypen à la int, char, long, ... auflistet/definiert ?). Andererseits, wenn _Bool nicht definiert wäre, dann würde bool (hier) auch wie char behandelt, d. h. ein Cast à la '(bool) 65' müsste das Ergebnis 65 liefern und nicht 1.
Ihr versteht, worauf ich hinaus will, oder ? Trotzdem ein Beispiel:
C++: |
#include <stdio.h> // #include <stdbool.h> // <- damit geht's
typedef char Bool; // <- eigenes bool ('_' fehlt) #define bool Bool #define true 1 #define false 0
int main () { int a = 65;
printf ("%d | %d\n", a, (bool) a); // 2x 65, wie erwartet return 0; }
|
Also ich kenne mich mit dem Compiler-Aufbau nicht aus, würde aber vermuten, der Datentyp ist intern irgendwo definiert und kann nicht ohne größeren Aufwand einfach nachprogrammiert werden.
[EDIT] Man kann alternativ natürlich jederzeit auch einfach ein Macro zum Casten verwenden. Dieser Post wurde am 29.08.2007 um 20:20 Uhr von cfx editiert. |