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

the*_*e_e 1 c macros stringification c-preprocessor

我需要由供应商的工具生成一堆生成的函数.由于每个功能的内部功能完全相同,我想我可以使用宏来让我的生活更轻松.

这是违规警告:

pasting "<function_name>" and "(" does not give a valid preprocessing token
Run Code Online (Sandbox Code Playgroud)

现在,我定义我的宏如下:

#define HANDLE_FUNCTION(x)               \
  void <function_prefix>_ ## x ## (void) \
  {                                      \
    x ## _Flag = TRUE;                   \
  }
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我写道:

HANDLE_FUNCTION(fn1)
HANDLE_FUNCTION(fn2)
Run Code Online (Sandbox Code Playgroud)

...等等

有关为何发生这种情况的想法?

APr*_*mer 5

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