size_t
Cで型の変数を出力したいのですがsize_t
、異なるアーキテクチャの異なる変数型にエイリアスされているようです。たとえば、あるマシン (64 ビット) では、次のコードは警告をスローしません。
size_t size = 1;
printf("the size is %ld", size);
しかし、私の他のマシン (32 ビット) では、上記のコードは次の警告メッセージを生成します。
警告: フォーマット '%ld' はタイプ 'long int *' を想定していますが、引数 3 のタイプは 'size_t *' です
これはポインター サイズの違いによるものと思われます。そのため、64 ビット マシンsize_t
ではlong int
( "%ld"
) にエイリアスされますが、32 ビット マシンsize_t
では別の型にエイリアスされます。
専用のフォーマット指定子はありますsize_t
か?