Printf键入uintXX_t不在VM上工作

时间:2015-04-30 07:16:22

标签: c printf virtual-machine string-formatting

我在Oracle虚拟机上运行OpenSuse,编译代码时遇到这种错误:vir

warning: format '%lx' expects argument of type 'long unsigned int', but argument has type 'uint64_t' 铸造价值没有帮助。

代码在另一台OpenSuse笔记本电脑上运行并编译得很好,我知道虚拟机上的操作系统并没有完全相同的正常启动行为'操作系统,但你知道我可以做哪些修复来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

根据ISO(C11)标准的7.8 Format conversion of integer types <inttypes.h>部分,stdint.h中定义的特定宽度 - 整数类型有特定的格式说明符(例如{ {1}}):

  

标题uint64_t包含标题<inttypes.h>并将其扩展为   托管实施提供的其他设施。

再过一点,在<stdint.h>中,它开始详细说明你应该使用的格式说明符。

对于7.8.1 Macros for format specifiers类型,小写十六进制输出格式为uint64_t,因此您应使用以下内容:

PRIx64