如何打印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在编译之前设置(导出)到正确的二进制文件。