Kann mir jemand erklären was der Unterschied zw _Bool
und bool
Datentyp in C?
Zum Beispiel:
_Bool x = 1;
bool y = true;
printf("%d", x);
printf("%d", y);
pr1m3x
Kann mir jemand erklären was der Unterschied zw _Bool
und bool
Datentyp in C?
Zum Beispiel:
_Bool x = 1;
bool y = true;
printf("%d", x);
printf("%d", y);
Michael Burr
Diese Datentypen wurden in C99 hinzugefügt. Seit bool
war vor C99 nicht reserviert, sie verwenden die _Bool
Schlüsselwort (das reserviert war).
bool
ist ein Alias für _Bool
wenn du einschließt stdbool.h
. Grundsätzlich einschließlich der stdbool.h
Header ist ein Hinweis darauf, dass Ihr Code mit der Kennung in Ordnung ist bool
‘reserviert’ zu sein, d.h. dass Ihr Code es nicht für seine eigenen Zwecke verwendet (ähnlich für die Identifikatoren true
und false
).
Die langfristige Absicht scheint zu sein, dass der Standard schließlich überarbeitet wird, um bool zu einem Schlüsselwort zu machen. Dies ist Schritt 1, in dem Sie
– Tialamex
31. August 2012 um 10:54 Uhr
Ich verstehe nicht, warum dies zwei Jahrzehnte dauern muss, wenn man bedenkt, dass es eine ziemlich offensichtliche Verbesserung ist. Code, dem diese Änderung nicht gefällt, kann weiterhin mit aktuellen Compilerversionen kompiliert werden.
– Ricardo Sánchez-Saez
31. August 2013 um 16:45 Uhr
Ich glaube nicht, dass die C-Norm jemals überarbeitet werden wird bool
ein Schlüsselwort. Beachten Sie, dass der Typ von Zeichenfolgenliteralen immer noch ist char *
und Sie können weiterhin Funktionsdeklarationen ohne Prototyp verwenden.
– zol
21. Juni 2015 um 17:57 Uhr
@ JL2210 Ja, aber jeder, der kein Sprachanwalt ist, denkt an die Sprache, die standardmäßig akzeptiert wird (dh C11 + welcher Satz von Erweiterungen standardmäßig aktiv ist), wenn er an C11 denkt, und sagt daher: “Sie können nicht verwenden Funktionsdeklarationen ohne Prototypen seit C90” wird die Leute nur noch mehr verwirren, als sie es bereits sind.
– zol
3. Januar 2020 um 5:04 Uhr
@ JL2210 Ich würde es so ausdrücken: “Nicht prototypisierte Funktionsdeklarationen sind eine veraltete Funktion des ursprünglichen C-Standards von 1989. Sie wurden aus späteren Überarbeitungen des Standards entfernt, werden aber aus Gründen der Abwärtskompatibilität immer noch von modernen Compilern akzeptiert. Nicht Verwenden Sie sie in neuem Code.”
– zol
3. Januar 2020 um 5:06 Uhr
Es gibt keinen Unterschied.
bool
ist ein Makro, das erweitert wird zu _Bool
in stdbool.h
.
Und true
ist ein Makro, das auf 1 Zoll erweitert wird stdbool.h
bool
muss auch ein Typdef sein, C hat diesen Typ nicht.– ott–
4. Januar 2012 um 9:11 Uhr
Analog zu _Komplex vs. Komplex.
– Ciro Santilli OurBigBook.com
17. September 2014 um 10:58 Uhr