c预处理器宏中的单独参数

时间:2017-04-27 14:28:02

标签: c c-preprocessor

假设我们有这样的代码:

#define SOME_MACRO(arg)    /*macro body*/

int main()
{
      SOME_MACRO(a = 1);
}

是否可以在c预处理器中分隔一个参数中传递的标记?

我的意思是可以获得',' =',' 1'在宏体中作为单独的令牌?

如果没有一般的方法可以在这种特殊情况下使用' a = 1'作为获得' a'作为一个单独的标记,以便我可以使用它'宏体'?

1 个答案:

答案 0 :(得分:2)

不,除非宏参数列表以逗号分隔,否则不可能。你必须这样做

SOME_MACRO(a, =, b);

或以其他方式a = b最终作为单个预处理器令牌。