ドキュメントとインターネットをできる限り検索してみましたが、if ステートメントで代入演算子が使用されている場合に Xcode コンパイラに警告を発行させることができませんでした。
私は RealBasic 出身で、この種の比較をタイプする非常に強い習慣があります。
if x = 5 then ...
もちろん、C では、その構文は x に値 5 を代入し、結果がゼロでないかどうかをテストします。「正しい」演算子は次のとおりです。
if (x == 5) { ... }
if 比較で割り当てが行われた場合にコンパイラが警告できるはずであるという言及をいくつか見つけましたが、Xcode 3.1/gcc でそれを有効にする方法が見つかりません。オプションを見つけました-pedantic
が、警告が生成されていないようです。
「==」ではなく「=」であることが判明したバグを追跡するのにかなりの時間を 2 回費やしたので、警告の助けが必要です。
代わりにこれを行うことができることを知っています(コンパイラエラーが発生します):
if (5 = x) { ... }
...しかし、それには、根深いコーディングの習慣も変える必要があります。不器用で後ろ向きに見えることは言うまでもありません。
ありがとう!