マクロ (コンピュータ用語)
しかし、マクロ自体はテキストの置換を機械的に実行するものでしかないので、そのマクロを使用する際にパラメータとしてインクリメント式やデクリメント式を直接渡したり、あるいはパラメータに関数の戻り値を使うために関数呼び出しを直接記述したりすると、それらの評価が意図せず複数回実行される場合がある。これをマクロの副作用と呼ぶ。マクロ利用者が副作用を期待していない場合は、関数マクロの定義時や使用時には注意すべきである。こうした点から、MISRA Cでは関数マクロ機能をできるだけ使わないようにすべきとしている。
なお、「定義済みマクロ」として、コンパイル環境によって特定の値(文字列)に展開されるマクロがある。デバッグのためにプログラム中にファイル名や行番号を自動的に埋め込んだり、前方互換性かつ/または後方互換性および移植性を維持するためにコンパイラのバージョンやターゲット環境(プラットフォーム)によってコンパイルするコードを変更したりする目的で利用する。