【发布时间】:2021-01-29 07:19:02
【问题描述】:
我可以在 GCC 中执行以下操作:
#define INIT_MODULE(name) \
({ extern int name(void); name(); })
int main(void) {
return INIT_MODULE(x);
}
在这里,函数(从name 扩展)通过语句表达式(GCC 扩展)创建、执行和返回。这是一个最小的 repo:我实际上正在做一些 __asm__ 魔术来制作 name 函数,因此是宏。
我希望它是单行的,而不是调用另一个宏来创建name 函数。在我的用例中,调用者只会调用一次INIT_MODULE,并且不/不应该知道它正在调用的底层函数的名称。
基本上,我需要一种在一行中声明、运行和返回函数值的方法(不使用 GCC 扩展!)。
我不想要的:
// ...
DECL_MODULE(x);
int main(void) {
return INIT_MODULE(x);
}
有什么想法吗?
【问题讨论】: