代码之家  ›  专栏  ›  技术社区  ›  erik

无效的预处理器令牌警告消息

  •  1
  • erik  · 技术社区  · 16 年前

    我有一堆从一个供应商的工具生成的函数需要我来定义。 由于每个函数的内部功能都是完全相同的,所以我想我可以使用宏来简化我的生活。

    以下是违规警告:

    pasting "<function_name>" and "(" does not give a valid preprocessing token
    

    现在,我的宏定义如下:

    #define HANDLE_FUNCTION(x)               \
      void <function_prefix>_ ## x ## (void) \
      {                                      \
        x ## _Flag = TRUE;                   \
      }
    

    然后在我的代码中写下:

    HANDLE_FUNCTION(fn1)
    HANDLE_FUNCTION(fn2)
    

    等等…

    有没有想过为什么会这样?

    1 回复  |  直到 10 年前
        1
  •  5
  •   AProgrammer    16 年前

    删除第二个 ## ,它没有用(你不想让一个符号 function_name( )