李狗要多读书
2018-03-09 12:52
采纳率: 100%
浏览 1.1k
已采纳

求大神解答 C语言宏定义 急急急

#define make_EHelper(name) void concat(exec_, name) (vaddr_t *eip)

求大神解释一下这个宏定义,没看懂很难受

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • blownewbee 2018-03-10 16:11
    已采纳

    遇到 make_EHelper(xxxx)
    其中xxxx表示一个任意名字
    替换为
    void concat(exec_, xxxx) (vaddr_t *eip)

    而 void concat(exec_, xxxx) (vaddr_t *eip) 是一个函数指针,其中vaddr_t *eip表示这个函数的入口地址(eip表示程序指针寄存器)

    点赞 评论
  • monsterkue 2018-03-12 06:11

    个人理解
    当调用make_EHelper(name);时候,相当于申明了一个函数,这个函数具有这样的特性:传入参数“exec_”“name”,返回一个函数指针,然后传入一个寄存器地址“eip”,返回空。再结合concat的字面意思,我们是不是可以这样假设:调用make_EHelper(plana);那么它变成了void exec_plana(vaddr_t *eip);
    哈哈,脑洞大开!!!

    点赞 评论

相关推荐 更多相似问题