printf

printfが使いにくいのは引数の扱いだ。

printf("a=%d, b=%d, c=%d\n", a, b, c);

このくらいならばいい。しかし引数が長くなっていくと(例えば数十個とかになると)すぐに破綻するのは周知の通り(たぶん。それともおれだけか??)。これを破綻させないようにしようとすると、複数のprintfに分割ということになってしまう。しかし、本当に分割する必要があるだろうか? 1回の呼び出しでも破綻しないようにprintfを作ることはできるはずだ。

第1引数がフォーマット文字列で、第2引数以降がフォーマットへの引数というのが悪化の原因であると思う。だからいっそのこと、このようにしてみたらどうか?

printf("a=%d, %+", a, "b=%d, %+", b, "c=%d\n", c);

フォーマット文字列で例えば「%+」が出現したら(「%+」は既存のフォーマット文字列でも意味があるので別なものを選ぶ必要はあるけど)、次の引数をフォーマット文字列の続きとして扱う。これで”%d”と引数の位置が近くなり、長いprintfも見易くなると思われる。

…C++を使え、という話もあるけどね。

コメントはありません

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です