当前位置: 首页 > news >正文

从实践出发--探究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
http://www.lryc.cn/news/595396.html

相关文章:

  • bmsimilarity的打分 调试参数
  • 选择排序 冒泡排序
  • windows电脑给iOS手机安装ipa包的方法
  • 宝塔面板Nginx报错: IP+端口可以直接从访问,反向代理之后就504了 Gateway Time-out
  • Xilinx FPGA XCKU115‑2FLVA1517I AMD KintexUltraScale
  • 052_迭代器(Iterator / ListIterator)
  • The Survey of Few-shot Prompt Learning on Graph
  • Ubuntu 22.04编译安装Nginx 1.28
  • Vue3 面试题及详细答案120道 (1-15 )
  • 可变形卷积神经网络详解:原理、API与实战
  • 如何使用终端查看任意Ubuntu的版本信息
  • ACE 插入元件
  • 信息学奥赛一本通 1576:【例 2】选课 | 洛谷 P2014 [CTSC1997] 选课
  • ​NVIDIA V100、H100、A100 和 RTX 5090​​ 的显存
  • C++高性能日志库spdlog介绍
  • 【郑州课工场】深入解析Kubernetes 1.33版本Pod Priority and Preemption功能
  • 【免费版】开启 Youtube 双语字幕
  • C/C++---emplace和emplace_back
  • Go语言的包
  • TSN(时间敏感网络)协议栈在STM32平台(尤其是STM32MP2系列)上的实现
  • 设备虚拟化技术-IRF
  • C++ 中的默认构造函数:非必要,不提供
  • 苍穹外卖Day5
  • B树、B+树的区别及MySQL为何选择B+树
  • Git核心功能简要学习
  • GraphRAG快速入门和原理理解
  • 关于JVM
  • AXI接口学习
  • 上网行为管理-身份认证1
  • 剖析Sully.ai:革新医疗领域的AI助手功能启示