プリプロセッサは所詮文字列置換、計算なんてできやしない…そう思っている方は多いでしょう。しかしそれは違います。計算できます。 本日の目的はプリプロセッサで足し算です。ADD(3, 2)と書けば5と答えてくれる関数マクロを作ってみましょう。 おっと、#define ADD(m, n) ((m) + (n)) とかではありません。これで足し算をするのは誰か、それはコンパイル・実行したときの処理系です。 今日の目的はあくまでも、プリプロセッサという処理系に閉じた足し算を定義することです。言い換えればプリプロセスが終わった時点で結果がでていないといけません。あとなんか細かいことはある感じがしますが、もうめんどいので早速始めましょう。 まずプリプロセッサにおける数を取り決めておきます。数とは、数字のみで構成されたトークンのことです。数字とは、トークンとは何かなどはめんどいので常識的に考えてください。