「The C Preprocessor」よんだ

なんで今まで読んでないのかと。

プリプロセッサについて悩んだことのある話が、何から何まで書いてありました。(当たり前)

  • #include はシステムファイル、#include "filename" はユーザファイル
  • ヘッダファイルの重複読み込みを防ぐために、#ifndef で #define を囲む
  • 「-I」オプションで、システムのデフォルトと異なるディレクトリをincludeディレクトリとする
    • 「-I-」オプションで、同名ファイルのinclude方法をより厳密に指定できる
  • #define行の関数名直後の空白あるなしで、引数あるなしの意味が変わる
  • マクロと同名の関数を呼び出すときは、(min) (a, bb) のように括弧で関数名を囲む
  • cppの使い方(試した→ cppコマンドを使って定義済みマクロの一覧を得る
  • マクロの再定義を避けるために #undef を使う

・・・等々。

最小値(min)マクロが引き起こす副作用の話も、常識なのだろうけれども、知らなかったです。面白い。

Cをろくに知らないけれども、Cで書かれたツールやシステムのコード読まないといけないような場合、これは必読ですね。

もっと早くに読めばよかった・・・。オロロン、オロロン。。。