标题:问一个关于宏的问题
只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-170258-1-1.html




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

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