sizeof(bool)是否定义?
我无法在标准文档中find答案。 sizeof(bool)
总是1个字节,还是实现定义?
是的,这是实施定义的,标准着重强调明确。
§5.3.3/ 1,删节:
sizeof(char)
,sizeof(signed char)
和sizeof(unsigned char)
是1; 适用于任何其他基本types的sizeof
的结果是实现定义的。 [注意:特别是sizeof(bool)
和sizeof(wchar_t)
是实现定义的。 69) ]
脚注69):
sizeof(bool)
不要求为1。
http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx
“在Visual C ++ 4.2中,标准C ++头文件包含一个typedef,它将bool和int相等,在Visual C ++ 5.0和更高版本中,bool被实现为一个大小为1字节的内置types,这意味着对于Visual在Visual C ++ 5.0和更高版本中调用sizeof(bool)的函数时,C ++ 4.2会调用yield 4,如果在Visual C ++ 4.2中定义了booltypes的结构成员,并且正在混合对象,则会导致内存损坏问题文件(OBJ)和/或使用4.2和5.0或更高版本的编译器构build的DLL。
它的实现定义。 只有sizeof(char)
是1
的标准。
见5.3.3段落1:
[注意:特别是,sizeof(bool)和sizeof(wchar_t)是实现定义的。