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

时间:2010-03-03 13:17:21

标签: c macros c-preprocessor stringification

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

以下是违规警告:

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 个答案:

答案 0 :(得分:5)

删除第二个##,它没用(你不想制作一个function_name(的符号。)