-3

重複の可能性:
sizeof(bool)の実装はC ++で定義されていますか?

g ++ lib(libpng)を使用してvc ++でコンパイルされ、boolがg++とvc++で同じサイズとビットであるかどうかを知る必要があるコードを書いています。私が知っているのは、すべて0であり、vc ++ではsizeof(bool)が1であるということだけです。

4

2 に答える 2

3

一部のプラットフォームでは1に等しくないバージョンg++(およびそのことについてはVisual C ++のバージョン)がありsizeof(bool)ます。したがって、g++とVisualC++で同じになるとは限りません。同じコンパイラの異なるバージョンまたは異なるプラットフォームの同じバージョンで同じであると想定することさえできません。

于 2012-05-09T08:18:56.080 に答える
2

別の質問で読むことができるように、C++03標準$5.3.3/ 1は、次のように述べています。

sizeof(char)、sizeof(signed char)、sizeof(unsigned char)は1です。他の基本タイプ(3.9.1)に適用されたsizeofの結果は、実装によって定義されます。[注:特に、sizeof(bool)とsizeof(wchar_t)は実装定義です。69)

したがって、の結果sizeof(bool)は実装定義です。

于 2012-05-09T07:48:56.610 に答える