Я исхожу из сценария, и препроцессор в C всегда казался мне уродливым. Тем не менее я обнимал его, когда я учился писать небольшие программы на С. Я действительно использую препроцессор для включения стандартных библиотек и файлов заголовков, которые я написал для своих собственных функций.
Мой вопрос: почему программисты C просто не пропускают все входящие и просто объединяют исходные файлы C и компилируют их? Если вы включите все свои приложения в одном месте, вам нужно будет только определить, что вам нужно, а не во всех исходных файлах.
Вот пример того, что я описываю. Здесь у меня есть три файла:
// includes.c
#include <stdio.h>
// main.c
int main() {
foo();
printf("world\n");
return 0;
}
// foo.c
void foo() {
printf("Hello ");
}
Выполняя что-то вроде cat *.c > to_compile.c && gcc -o myprogram to_compile.c
в моем Makefile, я могу уменьшить количество кода, который я пишу.
Это означает, что мне не нужно писать заголовочный файл для каждой создаваемой мной функции (потому что они уже находятся в основном исходном файле), а также означает, что мне не нужно включать стандартные библиотеки в каждый файл Я создаю. Мне это кажется отличной идеей!
Однако я понимаю, что C - очень зрелый язык программирования, и я представляю, что кто-то еще намного умнее меня уже имел эту идею и решил не использовать его. Почему бы и нет?