对POD
struct Data
{
int a;
int b[32];
char c[128];
};
C/C++不能够支持如下的语法:sizeof(Data::a); sizeof(Data::b); sizeof(Data::c[0]), sizeof必须要有存在的对象,才可以进行操作,这个不好
仿照offsetof宏,定义一个SIZEOF宏:#define SIZEOF(s,m) sizeof(((s *)0)->m)
在VC6下可以工作,其他环境不知
更好的办法(模板)
template<typename R , typename T>
size_t member_size( R T::* )
{
return sizeof(R);
}