對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);
}