| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 597 人关注过本帖
标题:问一个关于宏的问题
只看楼主 加入收藏
hewenhao
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-1-10
收藏
 问题点数:0 回复次数:7 
问一个关于宏的问题
如何定义一个宏,求出给定结构中给定成员的偏移量
#define OFFSET(structure, member) ??
搜索更多相关主题的帖子: 如何 structure member 
2007-09-15 22:23
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
能不能举个一例子说明你的问题.

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-09-15 22:51
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
收藏
得分:0 

取其字节偏移是可以的:
#define OFFSET(structure, member) ( (unsigned int) &(structure.member) - (unsigned int) &(structure) )

例:
typedef struct
{
int a;
char b;
float c;
double d;
}Temp;

int main(void)
{
Temp t;

printf("%u\n", &(t) );
printf("%u\n", OFFSET(t, a) );
printf("%u\n", OFFSET(t, b) );
printf("%u\n", OFFSET(t, c) );
printf("%u\n", OFFSET(t, d) );

getch();
return 0;
}

[此贴子已经被作者于2007-9-16 1:32:12编辑过]


欢迎加入 MVC 技术讨论群(新群:90093426)
2007-09-16 01:30
hewenhao
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-1-10
收藏
得分:0 

谢谢!


2007-09-16 09:30
hewenhao
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-1-10
收藏
得分:0 
回复:(hewenhao)问一个关于宏的问题
为什么结构体成员c的偏移量是8而不是5呀,char类型不是占1个字节吗?我现在有点糊涂了

2007-09-16 09:52
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

#pragma pack(1)
typedef struct
{
int a;
char b;
float c;
double d;
}Temp;
#pragma pack()


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-09-16 10:31
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
google -》pragma pack

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-09-16 10:31
hewenhao
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-1-10
收藏
得分:0 
回复:(Knocker)google -》pragma pack
谢谢,我明白了

2007-09-16 11:47
快速回复:问一个关于宏的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017193 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved