gpt4 book ai didi

c++ - sizeof能否返回0(零)

转载 作者:IT老高 更新时间:2023-10-28 14:00:40 25 4
gpt4 key购买 nike

sizeof 运算符在 C 或 C++ 中是否有可能返回 0(零)?如果可能,从标准的角度来看是否正确?

最佳答案

在 C++ 中,根据定义,空类或结构的 sizeof 至少为 1。来自 C++ 标准,9/3“类”:“类类型的完整对象和成员子对象应具有非零大小。”

在 C 中不允许使用空结构,除非通过扩展(或编译器中的缺陷)。

这是语法的结果(要求大括号内有东西)以及 6.7.2.1/7 “结构和 union 说明符”中的这句话:“如果 struct-declaration-list 不包含命名成员,行为未定义”。

如果允许使用大小为零的结构,那么它就是语言扩展(或编译器中的缺陷)。例如,在 GCC 中,扩展记录在 "Structures with No Members" 中。 ,上面写着:

GCC permits a C structure to have no members:

 struct empty {
};

The structure will have size zero. In C++, empty structures are part of the language. G++ treats empty structures as if they had a single member of type char.

关于c++ - sizeof能否返回0(零),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2632021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com