我的应用程序使用 OR-ed 值,如此示例(伪):
#define OPTION_1 1
#define OPTION_2 2
#define OPTION_3 4
#define OPTION_4 8
这些常量以整数的形式在各种函数中得到 OR-ed ,如:
OPTION_1 | OPTION_4 ...
有时我有很多 OPTIONS 来传递一个我不愿意的功能。我更喜欢这样的选项:
#define OPTION_ALL ?? <-- include all options
保留任何内容,而不是将其作为默认值传递。
这可能吗?我试过了:
#define OPTION_ALL 8
或者这是唯一的解决方案吗?
#define OPTION_ALL OPTION_1 | OPTION_2 | OPTION_3 | OPTION_4
SOLUTION:
这似乎是最好的方法:
#define OPTION_1 0
#define OPTION_2 1
#define OPTION_3 2
#define OPTION_4 4
#define OPTION_ALL (OPTION_4 * 2) - 1
它只使用最后一个选项作为输入
答案 0 :(得分:2)
是的,但OPTION_1
不能为0.应为1,然后OPTION_ALL
为15
#define OPTION_1 1
#define OPTION_2 2
#define OPTION_3 4
#define OPTION_4 8
#define OPTION_ALL 15
基本上你正在做的是你为每个选项设置一个二进制位为1。即
#define OPTION_1 0b00000001
#define OPTION_2 0b00000010
#define OPTION_3 0b00000100
#define OPTION_4 0b00001000
#define OPTION_ALL 0b00001111
然后你可以根据需要进行扩展。