猿问

如何打印uint64_t?失败:“格式中的虚假结尾'%'”

我写了一个非常简单的printf uint64_t测试代码:


#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]


临摹微笑
浏览 1585回答 3
3回答

陪伴而非守候

ISO C99标准规定,只有在明确要求时才必须定义这些宏。#define __STDC_FORMAT_MACROS#include <inttypes.h>... now PRIu64 will work

繁花如伊

在Centos 5.xi下编译memcached时遇到了同样的问题。解决方案是至少将gcc和g ++升级到版本4.4。编译之前,请确保将CC / CXX设置(导出)为正确的二进制文件。

慕哥9229398

由于已包含C ++标记,因此可以使用{fmt}库并完全避免PRIu64宏和其他printf问题:#include <fmt/core.h>int main() {&nbsp; uint64_t ui64 = 90;&nbsp; fmt::print("test uint64_t : {}\n", ui64);}提议基于该库的格式化工具用于C ++ 20:P0645中的标准化。
随时随地看视频慕课网APP
我要回答