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
ますか?
&
どこかを削除しましたか?