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

标签 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/

相关文章:

c++ - 实时操作系统调度员

c - 为什么 C 宏调用会耗尽大括号?

c - 使用#defines 自动替换变量

c - 指针和结构问题

c - 二进制小数到十六进制的错误 (turbo c)

c - 带有 %s 的 printf 包含空字符

iOS 错误预期 ')'

c - JNI/C 库 : passing byte ptr

c++ - 依赖#defines 的最佳实践?

c++ - 我将如何从 C++ 中的预处理器调用函数?