我有一些看起来像这样的位掩码:
namespace bits {
const unsigned bit_one = 1u << 0;
const unsigned bit_two = 1u << 1;
const unsigned bit_three = 1u << 2;
......
const unsigned bit_ten = 1u << 10;
}
除了有更多位并且名称实际上是我的程序有意义的标志。但有时我会删除位、添加位、重新组合相似的位等。理想情况下,我可以这样做:
namespace bits {
const unsigned bit_one = 1u << COUNTER;
const unsigned bit_two = 1u << COUNTER;
const unsigned bit_three = 1u << COUNTER;
......
const unsigned bit_ten = 1u << COUNTER;
}
是否有一些模板/宏可以自动执行此过程?我知道__COUNTER__
,但这是一个标题,所以如果它被包含在其他使用它的源中,__COUNTER__
它可能会损坏。我正在使用 C++11 之前的框架,因此虽然最终会升级我的编译器,但不使用 C++11 的解决方案将是理想的。