タグ

ブックマーク / yshibata.blog.ss-blog.jp (1)

  • コンパイル時のワーニング(-Wallと-Werror)(2) : 柴田 芳樹 (Yoshiki Shibata)

    プログラミングの伝承としてif文の中で変数をある特定の値と比較する際に、その特定の値を==の左に書いて、変数を右に書くというものがあります。たとえば、C++であれば、 if (0 == ptr) { // ... }このように書く理由として、==とタイプすべきところを間違って=と書いてもコンパイラがエラーにしてくれるからだと説明されます。しかし、上記の書き方は、プログラムを読む際には、「0はptrか」と読むことになり、意味としておかしいものとなります。来なら素直にptr == 0と書いて、「ptrは0か」と読み手に読ませるべきです。※1 gcc/g++では、-Wallをコンパイルオプションで指定すれば、ptr = 0と間違って書いたとしても、次のように警告します。 warning: suggest parentheses around assignment used as truth v

    コンパイル時のワーニング(-Wallと-Werror)(2) : 柴田 芳樹 (Yoshiki Shibata)
  • 1