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

问题描述

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

// 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 (将#修改为@)