类似代码:
typedef struct sD
{
}S_D;
int size_d = sizeof(S_D);
那么size_d=?
如果这是一段C++代码,那么这里结果是1;看上去编译器为这样没有成员的结构体隐形定义了一个一字节(char)的成员,目的是为了能用来标识类实例之间的不同。
这里可以这样理解,如果没有这一个字节,那么所有结构体的实例都是空,也就不占内存,那么他们的实例是没有区别的,因此C++的编译器不允许这么做,从而隐式增加了一个字节。
另外对于class也是同样的(因此C++中struct和class关键字基本没有区别)。
那么如果这个代码是C代码,最后的size_d是多少?