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

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

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

c

2个回答

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐