【发布时间】:2020-09-18 07:28:06
【问题描述】:
我正在尝试以更简洁的格式编写二进制文字。
我了解可以对整数文字执行以下操作:
int x = 1234_5678_9999;
我认为这适用于二进制文字,所以我尝试了:
uint32_t branch_bitmask = 0b0000_1111_0000_0000_0000_0000_0000_0000;
对于第一个下划线之后的所有内容,这会给我一个“无效的后缀”错误。
是否有下划线的替代方法可以让我以更简洁的方式编写二进制文字:
uint32_t branch_bitmask = 0b00001111000000000000000000000000;
【问题讨论】:
-
我知道在 C++ 中有
'数字分隔符,但我认为标准 C 没有类似的东西,可能有 GCC 扩展,但它不能在所有地方都可移植编译器 -
不是 c 编程语言。唯一的方法是将其转换为字符串(例如使用 itoa() 函数),然后在输出字符串中插入分隔符。
-
最后我选择用整数文字替换二进制文件,并将“更干净”但无效的二进制文字放在后面(注释)。