Ist sizeof(bool), definiert in der Sprache C++ standard?
Ich kann nicht finden, eine Antwort, die in der standard-Dokumentation. Funktioniert die Sprache C++ standard benötigen sizeof(bool)
immer 1 (für 1 byte), oder ist diese Größe von der Implementierung definiert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
sizeof(bool)
ist, ist die Implementierung definiert, und der standard bringt Bemerkenswerte Betonung auf diese Tatsache.§5.3.3/1, gekürzt:
Fußnote 69):
bool
?char
...http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx
"In Visual C++4.2, Standard C++ - header-Dateien enthalten eine Typdefinition, gleichgesetzt bool mit int. In Visual C++ 5.0 und höher, bool implementiert ist als built-in Typ mit einer Größe von 1 byte. Das bedeutet, dass Sie für Visual C++ 4.2, ein Aufruf von sizeof(bool) ergibt 4, während in Visual C++ 5.0 und später den gleichen Anruf Erträge 1. Dies kann eine Speicherbeschädigung verursachen Probleme, wenn Sie definiert haben, die Struktur, die Mitglieder, die vom Typ bool ist in Visual C++ 4.2 und mischen von Objekt-Dateien (OBJ) und/oder DLLs gebaut mit der 4.2 und 5.0 oder höher-Compiler."
Es ist die Umsetzung definiert. Nur
sizeof(char)
ist1
von der Norm.CHAR_BIT
, definiert inclimits
.Siehe 5.3.3 Absatz 1 :