是否可以使用与此(错误)语法类似的内容进行宏选择?
#define FLAG MULT
#ifdef FLAG ADD
int op(int a, int b) {return a + b;}
#endif
#ifdef FLAG MULT
int op(int a, int b) {return a * b;}
#endif
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
#define ADD 0
#define MULT 1
#define FLAG MULT
#if (FLAG == ADD)
int op(int a, int b) {return a + b;}
#elif (FLAG == MULT)
int op(int a, int b) {return a * b;}
#endif
Run Code Online (Sandbox Code Playgroud)
但是,条件编译通常会导致悲伤(通常,"未使用"分支将最终无法维护,并且当您切换回使用它时会出现问题).
C++提供了更好的机制(运行时多态,模板等)来解决这种性质的大多数(但不是全部)问题.
#define ADD +
#define MULT *
//...
#define FLAG MULT
//...
int op(int a, int b) {return a FLAG b;}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |