「The C Preprocessor」よんだ
なんで今まで読んでないのかと。
プリプロセッサについて悩んだことのある話が、何から何まで書いてありました。(当たり前)
- #include
はシステムファイル、#include "filename" はユーザファイル - ヘッダファイルの重複読み込みを防ぐために、#ifndef で #define を囲む
- 「-I」オプションで、システムのデフォルトと異なるディレクトリをincludeディレクトリとする
- 「-I-」オプションで、同名ファイルのinclude方法をより厳密に指定できる
- #define行の関数名直後の空白あるなしで、引数あるなしの意味が変わる
- マクロと同名の関数を呼び出すときは、(min) (a, bb) のように括弧で関数名を囲む
- cppの使い方(試した→ cppコマンドを使って定義済みマクロの一覧を得る)
- マクロの再定義を避けるために #undef を使う
・・・等々。
最小値(min)マクロが引き起こす副作用の話も、常識なのだろうけれども、知らなかったです。面白い。
Cをろくに知らないけれども、Cで書かれたツールやシステムのコード読まないといけないような場合、これは必読ですね。
もっと早くに読めばよかった・・・。オロロン、オロロン。。。