ホームページ  >  記事  >  バックエンド開発  >  私のコードが「形式に偽の末尾 '%'」を含む uint64_t を出力できないのはなぜですか?

私のコードが「形式に偽の末尾 '%'」を含む uint64_t を出力できないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-17 12:17:02607ブラウズ

Why Does My Code Fail to Print a uint64_t with

printf フォーマットの課題: uint64_t の処理

uint64_t 変数を出力しようとすると、次のようなエラー メッセージが表示される場合があります。末尾の '%' の形式です。」この問題は、普遍的に定義されていない ISO C99 標準の形式マクロに依存しているために発生します。

解決策は、これらのマクロの定義を明示的に要求することです。その方法は次のとおりです。

__STDC_FORMAT_MACROS 定義の設定

コードの先頭に次の行を追加します。

#define __STDC_FORMAT_MACROS

この定義必要な形式のマクロを含めるようコンパイラに指示し、PRIu64 マクロが認識され、使用できるようにします。

この定義が完了すると、次のコードは正常にコンパイルされます。

#include <inttypes.h>
#include <stdio.h>

int main()
{
  uint64_t ui64 = 90;
  printf("test uint64_t : %" PRIu64 "\n", ui64);
  return 0;
}

__STDC_FORMAT_MACROS 定義を指定すると、uint64_t 変数が正しくフォーマットされて出力され、以前に発生した問題が解決されます。

以上が私のコードが「形式に偽の末尾 '%'」を含む uint64_t を出力できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。