【发布时间】:2016-11-03 16:13:03
【问题描述】:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf 7.20.4 引入了宏整数常量:
1 以下类似函数的宏扩展为整数常量 适用于初始化具有整数类型的对象 对应于
中定义的类型。每个宏名称 对应于 7.20.1.2 或 7.20.1.5 中的类似类型名称。
我不太明白这一段。 宏基本上将适当的后缀添加到无后缀的数字上,如下所示:
UINT64_C(0x123) => 0x123ULL
但如果我想初始化一个 uint64_t,我会这样做:
uint64_t x = 0x123;
我根本不会为这个后缀而烦恼。
为什么在初始化时需要这些宏?
【问题讨论】:
-
我认为引入这些宏只是为了解决语言缺陷,即 stdint.h 类型没有整数文字后缀。有点像 inttypes.h 中 printf 的格式说明符。