c++ - 根据是否设置定义选择某些 MACRO
问题描述
我有两个不同的宏可以运行,具体取决于是否设置了定义:
// 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_
则将扩展假情况并且不对定义做任何事情。这可能吗?MACRO 可能没有正确设置,IS_DEFINED
但我不知道有什么方法可以让它工作。
解决方案
推荐阅读
- java - 通过 Java 中的递归需要一些帮助
- java - 尝试从受 ClourFlare 保护的服务器下载图像时出现 HTTP 503 错误
- mysql - Group by - 仅获取具有 X 行的组
- angular - pipe 和 map 在 anguarl 中有什么作用?
- windows-10 - Ubuntu 在 Hyper-V 下启动后关闭 NumLock
- java - 模拟 JWT 实用程序来验证令牌
- python - 滑动寡妇的每个子集数据的平均或总和
- mysql - 使用存储过程对事务进行 Sequelize
- firebase - 在 Cloud Run 上运行 firebase cli
- java - 从字符串中添加单个数字