免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: HopeCao
打印 上一主题 下一主题

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

论坛徽章:
0
51 [报告]
发表于 2004-12-24 13:15 |只看该作者

挑战高手,看一行看不懂的代码.

看看上面converse的两篇文章,觉得对理解这个问题有帮助

论坛徽章:
0
52 [报告]
发表于 2004-12-27 13:33 |只看该作者

挑战高手,看一行看不懂的代码.


  1. ((z*)0)->;w //段错误
  2. &((z*)0)->;w
复制代码

如果把((z*)0)->;w看作一个表达式的话,那么前者就是求表达式的值,而后者就是求表达式的地址,既然编译器知道了是求的地址而不是值就不会真正的对地址0进行解引用,而是得到这个地址然后根据结构中的偏移值来得到这个成员的地址。

论坛徽章:
0
53 [报告]
发表于 2006-08-16 10:56 |只看该作者
&((z*)0)->;w中“;”是什么意思?

论坛徽章:
0
54 [报告]
发表于 2006-08-16 12:46 |只看该作者

回复 53楼 ccjjhua 的帖子

我也有同样的问题。这;什么意思呢?

论坛徽章:
0
55 [报告]
发表于 2006-08-16 13:12 |只看该作者
faint~~~
讨论了半天,结果连这个宏定义的错误都没看出来!!!

因该是:

  1. #define test(z,w) (&(((z*)0)->w))
复制代码


linux 内核代码中这种伎俩经常采用,为了知道一个类(结构)中某个成员在该类(结构)中的偏移量。

[ 本帖最后由 dzbjet 于 2006-8-16 13:15 编辑 ]

论坛徽章:
0
56 [报告]
发表于 2006-08-16 13:20 |只看该作者
没有分号。这个offsetof等的使用和定义原来有帖子涉及过。

论坛徽章:
0
57 [报告]
发表于 2006-08-16 13:30 |只看该作者
flw 怎么也加那么多 ;

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
58 [报告]
发表于 2006-08-16 14:01 |只看该作者
原帖由 connet 于 2006-8-16 13:30 发表
flw 怎么也加那么多 ;

那时候,我们用的还是 phpbb,
FanQiang 的 Perl 学得不好,所以论坛改版的时候,有些代码转换错了。C 版还好,Shell 简直没法看了。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
59 [报告]
发表于 2006-08-16 14:40 |只看该作者
学习一下.

论坛徽章:
39
2017金鸡报晓
日期:2017-02-08 10:39:4219周年集字徽章-周
日期:2023-04-15 12:02:2715-16赛季CBA联赛之深圳
日期:2023-02-16 14:39:0220周年集字徽章-年
日期:2022-08-31 14:25:28黑曼巴
日期:2022-08-17 18:57:0919周年集字徽章-年
日期:2022-04-25 13:02:5920周年集字徽章-20	
日期:2022-03-29 11:10:4620周年集字徽章-年
日期:2022-03-14 22:35:1820周年集字徽章-周	
日期:2022-03-09 12:51:3220周年集字徽章-年
日期:2022-02-10 13:13:4420周年集字徽章-周	
日期:2022-02-03 12:09:4420周年集字徽章-20	
日期:2022-01-25 20:14:27
60 [报告]
发表于 2006-08-16 18:33 |只看该作者
怎么也没明白这个 “->;” 怎么就能通过编译,还讨论的热火朝天,哎,看来还要仔细学学c了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP