У меня есть следующее любопытство включаемых файлов и как они управляются (с GCC
):Включите заголовочный файл в C любопытстве
Скажем, у меня есть один исходный файл foo.c и три заголовки Foo. h, foo_cfg.h и foo_int.h.
В foo.c:
#include "foo.h"
#include "foo_int.h"
В foo.h:
#include "foo_cfg.h"
В foo_cfg.h:
/* no inclusions */
#define FOO BAR
В foo_int.h:
/* no inclusions */
#define BAR 0U
Я задаюсь вопросом, почему компиляция завершается успешно. Должен ли файл foo_cfg.h жаловаться, что он не знает о символе BAR?
Кроме того у меня есть еще один исходный файл bar.c, который содержит только файл foo.h и до сих пор работает.
Примечание: это из проекта, над которым я работаю, с сложной средой компоновки, о которой я не нуждаюсь в подробностях. Может ли быть так, что среда сборки влияет на это, кроме указания местоположения для header files
?
Возможно, вопрос действительно глупо или я что-то упустил, и приношу свои извинения.
Теперь я вижу все яснее, спасибо! –
@cilica: добро пожаловать! – Vlad
Вы можете сделать 'gcc -E file.c' для вывода файла после выполнения всей предварительной обработки, хотя это может стать довольно длинным, если вы включите какие-либо стандартные заголовки. – BoBTFish