如何将 "else if" 与预处理器 #ifdef 一起使用?
How to use "else if" with the preprocessor #ifdef?
在我的项目中,程序可以做两件事中的一件,但不能同时做两件事,所以我决定我能做的最好的事 class 是根据 #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)
typedef MyCalcClass ChosenClass;
#elif defined(USER_MODE)
typedef MyUserClass ChosenClass;
#else
#error "Define CALC_MODE or USER_MODE"
#endif
在我的项目中,程序可以做两件事中的一件,但不能同时做两件事,所以我决定我能做的最好的事 class 是根据 #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)
typedef MyCalcClass ChosenClass;
#elif defined(USER_MODE)
typedef MyUserClass ChosenClass;
#else
#error "Define CALC_MODE or USER_MODE"
#endif