如何打印uint64_t? 不符合:“格式为”伪造“的”%“

我写了一个非常简单的printf uint64_ttesting代码:

#include <inttypes.h> #include <stdio.h> int main() { uint64_t ui64 = 90; printf("test uint64_t : %" PRIu64 "\n", ui64); return 0; } 

我使用Ubuntu 11.10(64位)和gcc版本4.6.1来编译它,但失败了:

 main.cpp: In function 'int main()': main.cpp:9:30: error: expected ')' before 'PRIu64' main.cpp:9:47: warning: spurious trailing '%' in format [-Wformat] 

ISO C99标准规定,只有在明确要求的情况下才能定义这些macros。

 #define __STDC_FORMAT_MACROS #include <inttypes.h> ... now PRIu64 will work 

在Centos 5.x下编译memcached时也遇到同样的问题。

解决scheme是至less将gcc和g ++升级到版本4.4。

确保您的CC / CXX在编译之前设置(导出)到正确的二进制文件。