我在Oracle虚拟机上运行OpenSuse,编译代码时遇到这种错误:vir
warning: format '%lx' expects argument of type 'long unsigned int', but argument has type 'uint64_t'
铸造价值没有帮助。
代码在另一台OpenSuse笔记本电脑上运行并编译得很好,我知道虚拟机上的操作系统并没有完全相同的正常启动行为'操作系统,但你知道我可以做哪些修复来解决这个问题吗?
答案 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