size_tCで型の変数を出力したいのですが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か?