SIZEOF宏,弥补sizeof不足(摘)

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

posted on 2008-12-01 09:08 FongLuo 阅读(277) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

常用链接

留言簿

随笔分类(11)

随笔档案(79)

文章档案(1)

收藏夹(38)

学习网站

一般网站

最新随笔

搜索

积分与排名

最新评论

阅读排行榜