如何解决根据是否设置定义选择特定的宏
我有两个不同的宏可以根据是否设置了定义来运行:
// Will do stuff later with the macroString
#define CASE_true(DEFINE,params) \
auto macroString = std::to_string(DEFINE); \
return true;
#define CASE_false(DEFINE,params) \
return false;
我想要做的是使用定义变量名称运行 CHOOSE_CASE 宏并展开相应的函数。
#define IS_DEFINED(x) IS_DEFINED2(x)
#define IS_DEFINED2(x) (#x[0] == 0 || (#x[0] >= '1' && #x[0] <= '9'))
#define CHOOSE_CASE(DEFINE,params) \
CASE_##IS_DEFINED(DEFINE)##(DEFINE,params)
因此,如果在我的应用程序中有人写道:
#define MY_VAR 1
,则 CASE_
将扩展真情况并获得 MY_VAR
的值,如果未设置/定义 MY_VAR
,则 CASE_
将扩展假case 并且不对定义做任何事情。这可能吗? IS_DEFINED
MACRO 可能设置不正确,但我不知道有什么方法可以让它工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。