<分区>
假设我们有这样的代码:
#define SOME_MACRO(arg) /*macro body*/
int main()
{
SOME_MACRO(a = 1);
}
是否可以在 c 预处理器中分隔在一个参数中传递的标记?
我的意思是可以在宏主体中将 'a'、'='、'1' 作为单独的标记获取吗?
如果没有技巧可以用一般的方式做到这一点,那么在这种特殊情况下,可以将“a = 1”作为参数来获取“a”作为单独的标记,这样我就可以将它用作“宏体” '?
标签 c c-preprocessor
<分区>
假设我们有这样的代码:
#define SOME_MACRO(arg) /*macro body*/
int main()
{
SOME_MACRO(a = 1);
}
是否可以在 c 预处理器中分隔在一个参数中传递的标记?
我的意思是可以在宏主体中将 'a'、'='、'1' 作为单独的标记获取吗?
如果没有技巧可以用一般的方式做到这一点,那么在这种特殊情况下,可以将“a = 1”作为参数来获取“a”作为单独的标记,这样我就可以将它用作“宏体” '?
最佳答案
不,除非宏参数列表以逗号分隔,否则这是不可能的。你必须做
SOME_MACRO(a, =, b);
否则 a = b
将作为单个预处理器标记结束。
关于c - c预处理器宏中的单独参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43660658/