从实践出发--探究C/C++空类的大小,真的是1吗?
文章目录
- 测试代码
- VS2022
- 正常运行
- 编译失败
- GCC
- 总结
Author: NemaleSu
Data: 2025/07/21
测试环境:
- Win11:VS2022
- Ubuntu22.04:gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
相信众多cpper听过太多书籍、视频、文档、博客等资料,说C/C++里空类大小为1,那么真的是这样吗?
笔者我本着纸上得来终觉浅的道理,今天将实机验证一遍,看看这个说法是否正确
注意!!!
注意看文件的后缀,区分C/C++文件
测试代码
注意:为了保证C/C++均可编译,因此代码统一使用:
#include <stdio.h>struct Data
{};int main()
{struct Data data;printf("data size: %d\n", sizeof data);return 0;
}
VS2022
msvc-stdc++14
正常运行
编译失败
GCC
总结
- 在VC环境下,从VS2017开始
- C语言是不允许定义空类的,因此会报错
- C++允许空类,大小为1
- 在Gcc环境下
- C语言可以定义空类,大小为0
- C++可以定义空类,大小为1