我想写一个 C 宏来接受这个:
int foo() {
MY_MACRO
}
并将其扩展为:
int foo() {
_macro_var_foo++;
}
我发现我不能使用 __func__
,因为它实际上并没有在宏中展开;预处理器将其视为变量。
有什么方法可以让它发挥作用吗?
最佳答案
预处理器不知道函数,只知道源文件和行号。在那个阶段它不执行句法分析,只是文本分析和替换。这就是为什么 __func__
是一个神奇的变量,而不是像 __FILE__
和 __LINE__
那样神奇的宏。
关于我可以将 __func__ 替换为 C 宏中的标识符名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1552454/