INT64_C等宏定义解析
mob 发布于 2021-11-29

stdint.h头文件中有几个宏定义,看起来不容易理解,其中的INT64_C中使用了##和LL,如下面代码显示

#define INT8_C(x)    (x)
#define INT16_C(x)   (x)
#define INT32_C(x)   (x)
#define INT64_C(x)   (x ## LL)

#define UINT8_C(x)   (x)
#define UINT16_C(x)  (x)
#define UINT32_C(x)  (x ## U)
#define UINT64_C(x)  (x ## ULL)

#define INTMAX_C(x)  INT64_C(x)
#define UINTMAX_C(x) UINT64_C(x)

其中的##是连接符,LL为long long类型的后缀,参考下面的例子

 long i1 = 123L;
 long long i2 = 123LL;
 unsigned long u1 = 123UL;
 unsigned long long u2 = 123ULL;

C++11中提供了ll和LL表示long long;(ll是LL的小写,不是数字1)

ULL可以用Ull,uLL,ull表示。

mob
关注 私信
文章
61
关注
0
粉丝
0