두 개의 C 헤더 파일을 삭제하고 다시 #정의할 수 있도록 병합하는 방법은 무엇입니까?

두 개의 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

헤더 파일의 내용 순서가 중요하지 않은 경우 다음을 수행할 수 있습니다.

$ 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먼저 인쇄됩니다.

관련 정보