1. ホーム
  2. c++

[解決済み] uint64_tをprintfするには?で失敗する。"spurious trailing '%' in format" で失敗します。

2022-06-10 05:48:09

質問

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 (64bit)、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 標準では、これらのマクロは明示的に要求された場合のみ定義されなければならないと規定されています。

#define __STDC_FORMAT_MACROS
#include <inttypes.h>

... now PRIu64 will work