Вы можете скрыть их, используя препроцессор:
В file1.c:
#if defined FILE1_MAIN
int main(void)
{
printf("Running main() in file1.c");
return 0;
}
#endif
При необходимости это можно повторить в любом количестве файлов C.
Затем в Makefile есть логика, которая передает правильную опцию -D компилятору, то есть -DFILE1_MAIN для включения main()
из file1, -DFILE2_MAIN для получения file2.c и т.Техника также может быть полезна при реализации, например, библиотечных модулей, для включения необязательного main()
для тестирования в одном файле C.