define
文字列を置換するみたいな。「別名を与える」イメージ。
code:sample.cpp
関数マクロを使うと、
code:sample2.cpp
#define 置換前(x) cout << (x) << endl; みたいな引数を取ることもできる。
ただしこの処理は「そのまま置換」されるので注意。例えば上のcoutに置換する例で括弧がなかったら、三項演算子入れられたときに計算順序がおかしくなって怒られる。
細かいことを言うと、文字列リテラルの中では変換は起こらない。
defineの後に複数語くっついているときは、一番最初の単語が変換前だと思われるっぽい(?)。
プリプロセッサによりコンパイルうんぬんの前に文字列レベルで処理される…。