gpt4 book ai didi

c++ - uint64 标志或 uint32 标志 [2] 用于 32 位编译器的函数参数?

转载 作者:搜寻专家 更新时间:2023-10-31 00:47:53 25 4
gpt4 key购买 nike

我有一个用于某些位字段标志状态的 uint32 变量和一个用于这些标志的枚举。此变量作为参数按值传递给某些函数。

我需要再添加大约 20 个标志。我最好的选择是什么?将其扩展为 64 位还是将其视为 2 个 32 位的数组?

扩展到 64 位将使我使用编译器“扩展”,因为枚举是 32 位宽。但是使用数组似乎会导致更多的工作。

我的代码在 32 位和 64 位编译器上编译,并在 windows、linux 和 mac 上运行。

提前致谢。

最佳答案

我会使用 STL 位集。那么我的枚举就不必是 2 的幂。对于正常的枚举,它只是位集中的索引。你也可以使用 vector<bool> .

主要的好处是可移植性,因为您的标志集现在适合任何平台的正常枚举范围。

例子:

enum errorFlags { parity, framing, overrun, errorFlags_size };

std::bitset<errorFlags_size> flagSet;

. . .

// either of these set framing error condition
flagSet[framing] = true;
flagset.set(framing);

// either of these clear the framing error condition
flagSet[framing] = false;
flagset.reset(framing);

// this tests for the framing error condition
if (flagSet[framing])
{
// we have a framing error
}

关于c++ - uint64 标志或 uint32 标志 [2] 用于 32 位编译器的函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3292700/

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