Как упомянуто в комментарии @Matt, можно использовать «подстановочный знак».
Однако, когда я протестировал его с помощью маленькой программы, мне пришлось сделать следующее:
Если я всегда включаю «extra.h» в мой файл .c, то это приведет к ошибке сборки, если файл .h отсутствует. Точно так же, если я не включу, даже если файл присутствует, я не смогу обновить макросы. Поэтому я сделал следующее в моем make-файле.
CFLAGS += $(if $(wildcard ./optional.h),-include ./optional.h -DINCLUDE_OPTIONAL_H)
В своем файле .c я использовал INCLUDE_OPTIONAL_H для включения необязательного .h, как показано ниже.
#ifdef INCLUDE_OPTIONAL_H
#include "optional.h"
#endif
В файле option.h я проверил, определен ли макрос уже и определил его, а затем обновил его.
#ifdef ANAME
#undef ANAME
#endif
#define ANAME <new_value>