[質問] C言語のヘッダからdefine名とその設定値を出力するには?
山口と申します。
今関わっているプロジェクトでは、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名だけでなく設定値をうまく出力す
る方法があれば、御教授お願いします。
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735