cppの生成するディレクティブのフラグの意味

C言語のソースをcppにかけると生成されるディレクティブの意味。

# 1 "/usr/include/math.h" 1 3 4

最初の数字はファイルの行番号で、末尾の数字は
1 : includeを開始して新たなファイルに移る (ENTERフラグ)
2 : includeを終了して元のファイルに戻る (LEAVEフラグ)
3,4 : gccが内部的に利用する数値(syspという値に関するもの)
を表している。フラグの数字は必ず昇順になっている。3,4は自分でパースする場合には無視しても構わない。

追記

# 1 "<built-in>"
# 1 "hoge.h" 1
...
# 1 "<built-in>" 2

コンパイラがインクルードする組み込みのヘッダ。

# 1 "<command-line>"
# 1 "hoge.h" 1
...
# 1 "<command-line>" 2

コマンドラインから-includeオプションで渡されたヘッダ。