マクロ (コンピュータ用語)
C言語は、プリプロセッサと呼ばれる、コンパイラがソースプログラムを解釈してオブジェクトプログラムを生成する前に動作するプロセッサ(処理系)を備えている。番号記号#で始まる、プリプロセッサに与える指令のことをプリプロセッサディレクティブと呼び、いくつかのディレクティブが規格で標準化されているほか、固有のディレクティブをサポートするコンパイラも存在する。
ソースプログラムで
という行を記述すると、プリプロセッサによってコード中のSTRING1はSTRING2に置換される。これをオブジェクト形式マクロ (object-like macro) と呼ぶ。また、
のようにパラメータをとる関数形式マクロ (function-like macro) を定義することもできる。そのほか、
といった、シンボルの文字列化やトークンの連結を行なうことのできるマクロ特有の演算子も用意されている。マクロによる置換は、文字列リテラルやコメントの中には適用されない。
関数マクロには、引数の型を固定しない、呼び出しの実行時処理コストがかからないなど、関数よりも便利な面がある。