有一则旧帖子要求一种sizeof
可以返回的结构0
。来自高声誉用户的一些高分答案说,按标准,类型或变量的大小不能为0。我同意100%。
但是,有一个新的答案介绍了此解决方案:
struct ZeroMemory {
int *a[0];
};
我本来打算对它进行投票和评论,但是在这里花费的时间使我什至可以检查我100%确信的事情。所以......我既惊喜gcc
和clang
表现出同样的结果:sizeof(ZeroMemory) == 0
。更重要的是,变量的sizeof是0
:
ZeroMemory z{};
static_assert(sizeof(z) == 0); // Awkward...
哇...?
这怎么可能?