私が持っているとしましょう:
SDK.h:
#define foo 1
#define bar 1
アプリケーション.h:
#define foo 0
app.hがsdk.hですでに定義されているすべてのエントリをオーバーライドしたい場合は、次のようにmerged.hを生成するにはどうすればよいですか?
#define foo 0
#define bar 1
1つのアプローチは、「しないでください。前処理装置に代わるようにしてください」です。私はこれを試しましたが、私の場合は効果がないと思います。私はデフォルトのシェルスクリプトを使用する方法を探しています。
答え1
ヘッダーファイルの内容の順序が重要でない場合は、次のことができます。
$ awk '/#define/{a[$2]=$3; next}1;END{for(i in a){print "#define",i,a[i]}}' sdk.h app.h
#define foo 0
#define bar 1
含まない行が#define
最初に印刷されます。