多值DWORD枚举作为一个函数参数C++

Multi Value DWORD Enum as One Function Argument C++

本文关键字:一个 函数 参数 C++ 枚举 DWORD 多值      更新时间:2023-10-16

我无法让它工作。我想在第一个函数arg点中包括两个值(Color和Black)。

它在arg1中使用一个arg时工作正常:func(arg_a::Color, 5);

我在arg1中尝试了以下变体,但没有成功:

arg_a::Color || Black arg_a::Color && Black (arg_a::Color, arg_a::Black) DWORD test = arg_a::Color&&Black;

我的文件如下:参数a类型:DWORD

arg_a可以是以下一个或多个值:颜色白色黑色

要将两个"枚举值"编码为一个,通常每个值使用一位:

enum {
    Black = 0x01;
    White = 0x02;
    Color = 0x04;
}

然后您可以将它们与按位运算符组合:

call(Black|White);
// or perhaps easier to read
call(Black + White);

在接收端

call(int val) {
    if (val & Black) { ... }
    if (val & White) { ... }

请注意,这只是伪代码。

尝试DWORD(arg_a::黑色,arg_a::彩色)//预定义宏或(arg_a::Black | arg_a::Color)//按位或

您使用的是逻辑运算符,但需要一些按位操作才能完成。