とりあえず、

At Mon, 16 Oct 2006 00:31:15 +0900,
Takahiro Yamaguchi wrote:

[...]

> 
> 今は、ヘッダファイル内で設定されている 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 でプ
>    リプロセッサにかけて出力。 

gcc -P -E -dD $CCDEFINES hoge.c
          -dNから-dDに変更

-dDにすると、#define TIME_A 100 と出力されるのが分かったので、

> 6. 4. の各行の define名を1つづつ 5.の出力にあるかを grep で確認。

に追加で、
  
  7. 5.の出力にあった場合、awkを使用し第3フィールド以降も出力する。

    line=`grep -w 4.の各行のdefine名 5.の出力ファイル | head -1` >> /dev/null
    grep -w 4.の各行のdefine名 5.の出力ファイル >> /dev/null
    # 上の行のコマンド2回同じ事をしているのがださい!

    if [ $? -eq 0 ]; then
        echo $line |\
        awk '{
            printf("*,%s,",$2)
            printf(" ")
            for (i = 3; i <= NF; i++) {
                printf("%s ",$i)
            }
            printf(" ")
            printf("\n")    
        }'
    else
       ...
    fi   

で、

*,SW_A,  
*,TIME_A, 100 
(* は defineが設定されているという意味で出力しています。)

で、何とか私のプロジェクトでは事足りるようになりました。