Se a ordem do conteúdo nos arquivos de cabeçalho não for importante, você poderá fazer algo assim:
$ 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
Note que qualquer linha que não contenha #define
será impressa primeiro.