文章目錄
- 測試代碼
- 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