私は以下を持っています
size_t i = 0;
uint32_t k = 0;
printf("i [ %lu ] k [ %u ]\n", i, k);
コンパイル時に次の警告が表示されます。
format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘uint32_t’
スプリントを使用してこれを実行すると、次の結果が得られました。
Format argument 1 to printf (%u) expects unsigned int gets size_t: k
アドバイスありがとうございます。
の公式C99形式修飾子
—
ジョナサンレフラー、
size_t
は、「z」"%zu"
です。
@ケニーの答えはに最適だと思います
—
jww
uint32_t
が、それは欠けていsize_t
ます。@ u0b34a0f6aeの回答には両方が含まれています。
Jonathan Lefflerによる最初のコメントでのC89の2番目の言及はC99である必要があります
—
bph '19
uint32_t
from<stdint.h>
またはをサポートしていません<inttypes.h>
。これらのタイプを使用する場合は、C89にアップグレードする必要があります。拡張機能として、GCCではそれらの使用を許可している可能性がありますが、C89にはそのようなサポートはありませんでした。