我使用以下代码打印int64_t:
int64_t a = 100;
printf("%lld\n", a);
然而,它会产生警告。
warning: format '%lld' expects argument of type 'long long int', but argument 2 has type 'int64_t'
所以,我进入stdint.h并找到定义:
# if __WORDSIZE == 64
typedef long int int64_t;
# else
__extension__
typedef long long int int64_t;
# endif
问题是我使用了'%lld'打印一个长期的'在64位系统中。 虽然只是使用'%ld'解决警告,它会导致可移植性问题,因为它不能在32位系统中工作('%ld'占32位)。
是否有任何可移植的方法来打印int64_t?