c++ - 自动生成位位置

标签 c++

我有一些如下所示的位掩码:

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/

相关文章:

c# - 我可以同时以一种以上的语言使用 OpenGL 吗?

c++ - xcb 键重复忽略不起作用

c++ - ios::在std::ios::fixed中的含义

c++ - 窗口 C++ : how to timeout receiveFrom function in a udp based conversation

c++ - 为什么我可以在成员函数中使用尚未声明的成员变量?

c++ - 使用DrawEllipse(GDI+)绘制手写笔画点

c++ - RTD - 将示例 COM DLL 转换为 COM exe

c++ - std::copy 用于多维数组

c++ - 为什么 KD 树对于点集中的最近邻搜索如此缓慢?

c++ - 更正实时 IMFMediaSource 时间戳