c - 无效的预处理器 token 警告消息

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

...等等

关于为什么会发生这种情况有什么想法吗?

最佳答案

去掉第二个##,它没有用(你不想做function_name()的一个符号。

关于c - 无效的预处理器 token 警告消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2371494/

相关文章:

c - LoadRunner sprintf 和 lr_eval_string

c - 查找最后一次出现的字符串

c++ - 如何将文件同时作为字符串和代码包含在 cpp 中?

c++ - 定义不评估 POD?

c - fscanf 函数如何工作?

c - Printf 在 Ubuntu 中不工作

c - 为什么c库和语言先定义_name,然后typedef或pound定义_name?

c - 使用宏分配内存不好吗?

c++ - 如何压缩多个升压预处理器序列?

c# - 在两个 C# 项目之间使用 #define