Est sizeof(bool) défini dans le langage C++ standard?
Je ne peux pas trouver une réponse dans la documentation standard. Le langage C++ standard nécessitent sizeof(bool)
pour toujours être à 1 (1 octet), ou est-ce la taille de mise en œuvre définies?
Vous devez vous connecter pour publier un commentaire.
sizeof(bool)
est définie par l'implémentation, et le standard met notable accent sur ce fait.§5.3.3/1, en abrégé:
Note de bas de page 69):
bool
?char
...http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx
"Dans Visual C++4.2, le Standard C++ fichiers d'en-tête contenait une définition de type qui a assimilé bool int. Dans Visual C++ 5.0 et versions ultérieures, bool est mis en œuvre comme un type avec une taille de 1 octet. Cela signifie que pour Visual C++ 4.2, un appel de sizeof(bool) donne 4, tandis que dans Visual C++ 5.0 et plus tard, le même appel, les rendements 1. Cela peut provoquer une corruption de mémoire de problèmes si vous avez défini des membres de structure de type bool dans Visual C++ 4.2 et mélange les fichiers objet (OBJ) et/ou des Dll construit avec la 4.2 et 5.0 ou version ultérieure compilateurs."
Elle est définie par l'implémentation. Seulement
sizeof(char)
est1
par la norme.CHAR_BIT
, défini dansclimits
.Voir 5.3.3 paragraphe 1 :