내가 가지고 있다고 가정 해 봅시다 :
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
먼저 인쇄됩니다.