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