我有一些如下所示的位掩码:
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__
,但这是一个 header ,因此如果它也包含在使用 __COUNTER__
的其他源中,它可能会崩溃。我正在使用 C++11 之前的框架,因此虽然最终会升级我的编译器,但不使用 C++11 的解决方案将是理想的。
最佳答案
为什么不使用带参数的宏?
#define BIT(n) (1 << (n))
关于c++ - 自动生成位位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14605763/