#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 operator在 x
的两边,以使其正确替换。
#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/