我经常遇到这样的情况:我需要在编译时生成几个常量以用于移位和屏蔽操作。
e.g.
#define blockbits 8
#define blocksize 256 // could be generated from 2^blockbits
#define blocksize 0xFF // could be generated from blocksize - 1
我希望所有这些都是从生成的blockbits
,但是据我所知,没有可以在预处理器中使用的电源操作。
有谁知道在编译时生成此类内容的简单方法?
您可以将它们定义为数学表达式:
#define blockbits 8
#define blocksize (1 << blockbits)
#define blockXXXX (blocksize - 1) // changed from blocksize to blockXXXX, since blocksize is already taken
括号是为了确保在其他表达式中使用它们时不会出现运算符优先级问题。
您可能还想将名称更改为全部大写,例如BLOCKBITS
, BLOCKSIZE
等,这是一种 C++ 命名约定,用于区分宏和普通名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)