山口と申します。

今関わっているプロジェクトでは、C言語でソースを記述しています。
ヘッダファイル内で以下のような define を設定することにより、

/* この機能を使う場合には define して下さい */ 
#define SW_A
/* この時間を 10〜100の間で設定して下さい */
#define TIME_A 100

生成物を configuration しています。

今は、ヘッダファイル内で設定されている define名 を抽出するために、以下
の手順で shell script を組んでいます。 

1. ヘッダファイルから define を grep する。
2. 1.の出力から define名 を取り出すために、awk で grep の次のワードを
   取り出し出力。
   (define /* */ SW のようにされているとdefine名を取り出せないが、その
   よう書式はないと仮定)
3. 2.の出力をから uniq -d で重複している define を出力。
4. 2.の出力と 3. の重複している define名を取り除きユニークなdefine名の
   みにする。
   (自作コマンドにて対処。)
5. header を hoge.c に include し gcc -P -E -dN $CCDEFINES hoge.c でプ
   リプロセッサにかけて出力。 
6. 4. の各行の define名を1つづつ 5.の出力にあるかを grep で確認。

というような手順です。

この手順だと、設定値がある

#define TIME_A 100

のような場合、TIME_Aのdefine名が設定されていることで、抽出はできますが、
設定値の100 が出力する事ができません。

プリプロセッセなどをうまく使い define名だけでなく設定値をうまく出力す
る方法があれば、御教授お願いします。