関数形式マクロで引数を括弧で囲まないと、意図しない優先順位で展開されてしまう典型的な事故のこと。書き方の作法で防げる。SQUARE(1+2)が9ではなく5になってしまう、といった典型例が知られている。
#define SQUARE(x) ((x)*(x))のように、引数を取って処理を展開するマクロのこと。括弧の付け忘れが罠になりやすい。呼び出し方は関数に似ているが、実際は単なる文字列の置き換えである点に注意。
プリプロセッサがマクロの呼び出し箇所を、定義された内容にそのまま置き換える処理そのもののこと。コンパイルより先に行われる。展開後のコードはコンパイラエラー時にも表示されることがあり、読み解く力が求められる。
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。