有没有办法修复stdint类型的格式说明符警告?

Dan*_* M. 3 c printf typedef stdint

问题是在一个平台上(windows,mvsc2015)uint64_t被定义为unsigned long long另一个平台(ubuntu,clang),unsigned long并且有代码看起来像 sprintf(buffer, "%#llx", u64key);

Pas*_*uoq 10

解决方案是使用C99的格式宏,特别是PRIu64对于uint64_t:

#include <inttypes.h>
…
sprintf(buffer, "%#" PRIu64 "\n", u64key);
Run Code Online (Sandbox Code Playgroud)