對POD
struct Data
{
int a;
int b[32];
char c[128];
};
C/C++不能夠支持如下的語法:sizeof(Data::a); sizeof(Data::b); sizeof(Data::c[0]), sizeof必須要有存在的對象,才可以進(jìn)行操作,這個(gè)不好
仿照offsetof宏,定義一個(gè)SIZEOF宏:#define SIZEOF(s,m) sizeof(((s *)0)->m)
在VC6下可以工作,其他環(huán)境不知
#define SIZEOF(s,m) sizeof(((s *)0)->m)
struct Data
{
int a;
int b[32];
char c[128];
};
int main(int argc, char* argv[])
{
int z = 0;
z = SIZEOF(Data, a); //---- 4
z = SIZEOF(Data, b);//---- 128
z = SIZEOF(Data, c);//---- 128
z = SIZEOF(Data, b[0]);//---- 4
z = SIZEOF(Data, c[0]);//---- 1
return 1;
}