微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据是否设置定义选择特定的宏

如何解决根据是否设置定义选择特定的宏

我有两个不同的宏可以根据是否设置了定义来运行:

// 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 举报,一经查实,本站将立刻删除。