一个招聘考试题,解释该宏的功能

蜗牛爬珠峰 2004-12-21 09:01:26
#define macro1(a, b) ((int)(char)&(t *)0->m)
我最讨厌这种东西,就没有答这个
大家来说说看?
...全文
781 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddddh 2004-12-22
  • 打赏
  • 举报
回复
呵呵,linux kernel里面也有类似的macro,还是比较有用的:)
dongyuanzhang 2004-12-22
  • 打赏
  • 举报
回复
offset(<< >>),haha!
同桌老王 2004-12-22
  • 打赏
  • 举报
回复
我分析了一把:

http://blog.csdn.net/kevin_wang/archive/2004/12/22/225186.aspx
  • 打赏
  • 举报
回复
我觉得内存被cpu逼急了会打写程序的人
----------------------------------------
这句话有点意思,^_^
嫩鱼 2004-12-22
  • 打赏
  • 举报
回复
好像是今年南摩考试的第一题吧,或者类似,记不清了。
xiaonian_3654 2004-12-22
  • 打赏
  • 举报
回复
这是南京摩托罗拉的笔试题。。。。。。
就是offset,
蜗牛爬珠峰 2004-12-22
  • 打赏
  • 举报
回复
我倒知道他是偏移量,可就搞不清为什么这样之后又那样,一下子就怀疑自己写程序不规范
yjh1982 2004-12-22
  • 打赏
  • 举报
回复
写错了!
kof11321 2004-12-22
  • 打赏
  • 举报
回复
那个b是不是应该是类a的static成员变量啊,普通的类成员变量也能这么用?
fct0906 2004-12-22
  • 打赏
  • 举报
回复
xiaonian_3654(你猜猜(我要打光棍,小乔嫁不了))

我要打光棍,小乔嫁不了

什么谜语啊?
pacman2000 2004-12-22
  • 打赏
  • 举报
回复
偏移。。。能避免尽量避免。
sunlu_eric 2004-12-22
  • 打赏
  • 举报
回复
具体的解释一下步骤可以么?

迷糊,有点!
leolein 2004-12-22
  • 打赏
  • 举报
回复
linux中的链表就是用这种方法找到其宿主的
haha52 2004-12-22
  • 打赏
  • 举报
回复
我觉得,是把A的指针和内存0的位置对齐,然后得出B的指针指向的地址。因为A从0开始,所以这个地址也是B在A中的偏移。
后面怎么要转化两下就不知道了
lazyboya 2004-12-22
  • 打赏
  • 举报
回复
是啊有点晕.
Andy__Huang 2004-12-21
  • 打赏
  • 举报
回复
這個題目真的嚇人了...
jsblcg 2004-12-21
  • 打赏
  • 举报
回复
应该是#define macro1(t, m) ((int)(void*)&(t *)0->m)
吧,从VC库里抄来的,用于计算结构或类成员的偏移
Henry0 2004-12-21
  • 打赏
  • 举报
回复
哪来的t?
sandrowjw 2004-12-21
  • 打赏
  • 举报
回复
我没笑楼主,《C++ Object Module》里面有类似的东西的,可以参考一下
kobefly 2004-12-21
  • 打赏
  • 举报
回复
啊?
搞笑的
没搞错吧

楼上某位所言
#define macro1(a, b) ((int)(char)&((a *)0)->b)
表示结构a的成员变量b在a中的偏移量

我觉得有道理
但是求偏移的话
为什么不直接转int,而先char 后int 呢?
奇怪
加载更多回复(13)

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧