问题描述
我有两个不同的宏可以根据是否设置了定义来运行:
// 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 (将#修改为@)