在 C/C++ 中,我们有 __FUNCTION__
宏,它被替换为一个字符串,保存当前函数的名称。但是如果我想要函数的标识符怎么办?也就是说,不是字符串,而是我可以用作标记来创建其他标识符的东西,例如,如果我们有
#define MAGIC /* ... */
#define MORE_MAGIC MAGIC ## _bar
void foo() {
printf("%s\n",__FUNCTION__);
MORE_MAGIC();
}
void foo_bar() {
printf("%s\n",__FUNCTION__);
}
void baz() {
printf("%s\n",__FUNCTION__);
MORE_MAGIC();
}
void baz_bar() {
printf("%s\n",__FUNCTION__);
}
int main() {
foo();
}
应该打印
foo
foo_bar
baz
baz_bar
注意事项:
- 我只对预处理时间感兴趣。
- 我宁愿不使用预处理器调用替换我的函数定义 - 虽然我知道这可能会起作用。
最佳答案
不幸的是你不能。因为您不能unstringify 宏[ 1 ].
换句话说,您不能删除由 __FUNCTION__
生成的字符串周围的引号并通过 _bar
联系它。
关于c++ - 如何获取当前函数的标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22320488/