C ++のprintf size_tへのクリーンなコード(または:C ++のC99の%zに最も近いもの)
を出力するいくつかのC ++コードがありますsize_t。 size_t a; printf("%lu", a); これを32ビットと64ビットの両方のアーキテクチャで警告なしにコンパイルしたいのですが。 これがC99の場合、を使用できますprintf("%z", a);。しかし、AFAICT %zは標準のC ++方言には存在しません。代わりに、私はしなければなりません printf("%lu", (unsigned long) a); これは本当に醜いです。 size_t言語に組み込まれたs を印刷する機能がない場合、適切なキャストをsize_tsに挿入して、適切なキャストを維持しながら、誤ったコンパイラ警告を排除できるprintfラッパーなどを作成できるかどうか疑問に思います。 何か案は? 編集私がprintfを使用している理由を明確にするために、私は整理している比較的大きなコードベースを持っています。printfラッパーを使用して、「警告を書き込み、それをファイルに記録し、場合によってはエラーでコードを終了する」などの処理を行います。coutラッパーを使用してこれを行うのに十分なC ++-fooを集めることはできるかもしれませんが、コンパイラの警告を取り除くためだけに、プログラムのすべてのwarn()呼び出しを変更したくありません。