gpt4 book ai didi

c - 定义一个包含所有 OR-ed 值的常量

转载 作者:太空宇宙 更新时间:2023-11-04 02:31:26 25 4
gpt4 key购买 nike

我的应用程序使用OR-ed 值,就像这个例子(伪):

#define OPTION_1      1
#define OPTION_2 2
#define OPTION_3 4
#define OPTION_4 8

这些常量在各种函数中以整数形式进行或运算,如下所示:

OPTION_1 | OPTION_4 ...

有时我有很多选项来传递一个我不想传递的函数。我更喜欢有一个像这样的选项常量:

#define OPTION_ALL      ??   <-- include all options

保存任何东西,而不是将其作为默认值传递。

这可能吗?我试过:

#define OPTION_ALL      8

或者这是唯一的解决方案?

#define OPTION_ALL      OPTION_1 | OPTION_2 | OPTION_3 | OPTION_4

解决方案:

看来这是最好的方法:

#define OPTION_1      0
#define OPTION_2 1
#define OPTION_3 2
#define OPTION_4 4
#define OPTION_ALL (OPTION_4 * 2) - 1

它只是使用最后一个选项作为输入

最佳答案

可以,但是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

然后您可以根据需要进行扩展。

关于c - 定义一个包含所有 OR-ed 值的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42745600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com