組み込みプラットフォームでC89を使用しています。 size_t
を印刷しようとしましたが、うまくいきませんでした:
#include <stdio.h>
int main(void) {
size_t n = 123;
printf("%zu\n",n);
return 0;
}
123
の代わりに、zu
を取得しました。
他の指定子が正しく機能します。
size_t
が存在する場合、zu
もprintf
で利用できませんか?
これはライブラリベンダーに連絡する必要があるものですか、それともライブラリの実装で除外できますか?
Size_tが存在する場合、printfでもzuを使用できませんか?
size_t
は少なくともC89から存在していましたが、それぞれのフォーマット指定子%zu
(具体的には長さ修飾子z
)がC99以降で標準に追加されました。
したがって、C99(またはC11)を使用できず、C89でsize_t
を印刷する必要がある場合は、次のような他の既存のタイプにフォールバックする必要があります。
printf("%lu\n", (unsigned long)n);