在C中定义空结构体,或在C++中定义空结构体/空类时,其sizeof值是多少?
我们在GCC和VC6下作测试。测试步骤如下:
1、测试代码1
- /*代码1*/
- struct A{
- };
- class B{
- };
其测试结果为:
C | C++ | |||
sizeof(struct A) | sizeof(B) | sizeof(struct A) | sizeof(B) | |
gcc 3.4.5 | 0 |
| 1 | 1 |
VC++ 6.0 | 编译错误 |
| 1 | 1 |
2、测试代码2
- /*测试代码2*/
- struct C{
- char a[0];
- };
- class D{
- int a[0];
- };
测试结果为:
C | C++ | |||
sizeof(struct C) | sizeof(D) | sizeof(struct C) | sizeof(D) | |
gcc 3.4.5 | 0 |
| 0 | 0 |
VC++ 6.0 | 4 |
| 1 | 1 |
我们从测试结果可以看出空结构体或空类跟编译器和语言相关。