0

我无法让它工作。我想在第一个 func arg 点(颜色和黑色)中包含两个值。

它适用于 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;

我拥有的文档如下: arg_a 类型:DWORD

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

4

2 回答 2

2

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

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) { ... }

请注意,这只是伪代码。

于 2014-10-13T06:01:59.007 回答
0

try DWORD(arg_a::Black, arg_a::Color) // 预定义宏或 (arg_a::Black|arg_a::Color) // 按位或

您正在使用逻辑运算符,但您需要一些按位运算来完成此操作。

于 2014-10-13T06:05:42.413 回答