Если мы имеем два .c файлы и .h файл: main.c sub.c sub.h
, гдеC: уточнение на ЕП
main.c
#include "sub.h"
...
sub.c
#include "sub.h"
...
мы можем скомпилировать программу с помощью i)
gcc -o a.out main.c sub.c
или б)
gcc -c main.c
gcc -c sub.c
gcc -o a.out main.o sub.o
Учитывая этот случай, делает модуль вывода препроцессора один или два перевода (ы)?
Я смущен, потому что: main.c
включает в себя sub.h
, что означает, что препроцессор выводит один блок компиляции. С другой стороны, перед созданием исполняемого файла создаются два объектных файла: main.o
и sub.o
, что заставляет меня думать, что «два исходных файла, таким образом, два единицы перевода».
Какую часть я недопонимаю? или где я делаю ошибки?