#define
を使用するための最良の方法は、もはや使用する必要があります:)
の機能の一例として、あるしかし、あなたは#define
を使う、という場合は、マクロの展開は、マクロのを尊重していないことを覚えておいてください境界。入力ストリームにトークンを挿入するだけです。したがって、常に式をカッコで囲む必要があります。マクロが引数を取る場合は、それらもカッコで囲む必要があります。あなたのケースでは
:
#define TOTAL (NO0 + NO1 + NO2 + NO3 + NO4 + NO5 + NO6 + NO7 + NO8 + NO9)
あなたは、あなたはあなたの定義と36の代わりになると思われる、例えば、TOTAL/10
、の結果で驚かれることでしょうことを実行しない場合4.
は同様に予想:あなたのようにそれを呼び出す場合
#define SQUARE(x) x * x
は、例えば、SQUARE(y + 1)
を正しい結果を生成しません。あなたは使用する必要があります。
#define SQUARE(x) ((x) * (x))
も、あなたはあなたがSQUARE(y++)
としてそれを呼び出す場合には驚き可能見つけることができます。
これらの問題はすべて、マクロの使用を避けることで回避できます。最近では、マクロを使用せずにコードを最適化するために、最新のコンパイラを使用することができます。
あなたのコードの画像ではなく、郵便番号です。 – melpomene
短い答え:いいえ。 –
http://codereview.stackexchange.com/をご覧ください。 – melpomene