免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 27542 | 回复: 92
打印 上一主题 下一主题

挑战高手,看一行看不懂的代码. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-24 12:00 |只看该作者 |正序浏览
#defiine test(z,w) (&(((z*)0)->;w))

这个宏是什么意思?怎么用它?为什么用它?

论坛徽章:
0
93 [报告]
发表于 2008-05-08 20:28 |只看该作者
1 #include <stdio.h>
  2
  3 typedef struct str x;
  4 struct str
  5 {
  6     char a;
  7     short b;
  8     int c;
  9     int d;
10 };
11
12 #define test(z,w) (&(((z *)0)->w))
13
14 int main(void)
15 {
16     printf("%d\n",test(x,c));
17
18     return 0;
19 }

打印结果:4 也就是C的偏移量

论坛徽章:
0
92 [报告]
发表于 2008-05-08 18:12 |只看该作者
不错

论坛徽章:
0
91 [报告]
发表于 2008-05-08 15:11 |只看该作者
服了大家了,我前几天也提出来这个类似的问题,就没有像这个问题一样,竟然讨论了9页,
哎,人品问题呀

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:19:56
90 [报告]
发表于 2008-05-08 13:34 |只看该作者
原帖由 flw 于 2003-2-24 19:43 发表
设有结构变量

struct tagX
{
......
; y;
......
}x;

其中 typeY 是任意一个合法的类型名。

假设 ptrx 是指向 x 的指针。

那么,分量 y 的偏移量是指:“类型 tagX 的任意一个实例的地址与其分 ...



吾常终日之所思,不如须臾之所学!!
谢谢flw了!

论坛徽章:
0
89 [报告]
发表于 2008-05-08 12:47 |只看该作者
原帖由 duanius 于 2008-4-23 19:57 发表
。。。题目如果没有;就看的懂  加了个;把我吓住了
看大家讨论的热火朝天都无视;  我还以为我C烂到所有人都了解的问题就我不明白


加个; 你也应该看懂啊,绝对的编译错误。

论坛徽章:
0
88 [报告]
发表于 2008-04-23 19:57 |只看该作者
。。。题目如果没有;就看的懂  加了个;把我吓住了
看大家讨论的热火朝天都无视;  我还以为我C烂到所有人都了解的问题就我不明白

论坛徽章:
0
87 [报告]
发表于 2008-04-23 16:25 |只看该作者
ls的又在挖坟了~~~

论坛徽章:
0
86 [报告]
发表于 2008-04-23 16:12 |只看该作者
08奥运都快到了,还在为这个分号 “;” 所困扰

论坛徽章:
0
85 [报告]
发表于 2007-01-08 10:48 |只看该作者
各位,请看好,#defiine test(z,w) (&(((z*)0)->;w)), —>后面有一个分号,如果没有分号就是取分量地址的意思了
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP