2つのCヘッダーファイルを削除して再度#定義できるようにマージする方法は?

2つのCヘッダーファイルを削除して再度#定義できるようにマージする方法は?

私が持っているとしましょう:

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最初に印刷されます。

おすすめ記事