#define make_EHelper(name) void concat(exec_, name) (vaddr_t *eip)
求大神解释一下这个宏定义,没看懂很难受
遇到 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);
哈哈,脑洞大开!!!