【发布时间】:2021-10-12 05:36:31
【问题描述】:
在我的项目中,程序可以做两件事中的一件事,但不能同时做两件事,所以我决定我能为一个类做的最好的事情是根据#define 预处理器变量来定义它。下面的代码可以告诉你我的想法,但你可以猜到它不起作用:
#ifdef CALC_MODE
typedef MyCalcClass ChosenClass;
#elifdef USER_MODE
typedef MyUserClass ChosenClass;
#else
static_assert(false, "Define CALC_MODE or USER_MODE");
#endif
所以我可以做
#define CALC_MODE
就在这之前。
如果需要,我可以放弃使用 static_assert。如何做到这一点?
【问题讨论】:
-
你可以使用
#if defined(CALC_MODE)和#elif defined(USER_MODE) -
您在寻找
$elif defined(...)吗?您可能还会发现#error指令很有趣。 -
@RetiredNinja 是正确的!
-
@StoryTeller-UnslanderMonica 对,在这种情况下实际上比 static_assert 更好,因为它总是错误的
标签: c++ c-preprocessor preprocessor