C 宏 - 未在此范围错误中声明

标签 c macros

#define SET_NONEMPTY(x) { const NString& var = r->hdrs->get_##x(); \
  if (!var.empty()) { \
    set_##x_for_serving(r->request, var.data(), var.length()); \
  } \
}

如果请求成员不为空,上面的宏会尝试设置一个请求成员,但我得到以下结果 错误:当我使用此宏时,未在此范围内声明“set_x_for_serving”。

上面的宏有什么问题?

最佳答案

您需要 token-pasting operatorx 的两边,以使其正确替换。

#define SET_NONEMPTY(x) { const NString& var = r->hdrs->get_##x(); \
  if (!var.empty()) { \
    set_##x##_for_serving(r->request, var.data(), var.length()); \
  } \
}

关于C 宏 - 未在此范围错误中声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19225687/

相关文章:

macros - 将计算列表传递给 Elixir 宏

c - 如何从包含宏名称的字符串访问宏

c - 用于在 c 中创建螺旋形状图案的嵌套循环

time_t 的 C 字符串表示

c++ - 将 char[][] 转换为 char**

c - 释放分配的字符串时内存损坏

用于 CREATE 语句的 MySQL 用户定义常量或文字

c# - C# 中的 Visual Studio 用户定义属性表宏

c++ - 如何从预处理器宏中识别平台/编译器?

c - 二进制文件读写