Язык C - это разрешительный язык низкого уровня. Если программист хочет делать странные вещи, компилятор не сможет ничего остановить.
Ваш вопрос относится к этому вкусу: вы можете включить first.c
в second.c
, ни компилятор, ни компоновщик не протестуют. И в простых случаях (только 2 исходных файла) он будет работать одинаково. Вы также можете переименовать first.c
в first.h
и включить его. Все это просто конвенция ... и хорошие практики.
Потому что никогда не было делать это (за исключением особых случаев, предложенных Джонатаном Леффлером). Вы делаете отдельные правила компиляции разбитыми. Когда вы включают файл, это (с точки зрения компилятора) так же, как включение его в текстовый редактор. Вы знаете, что у вас всегда может быть один монолитный исходный файл, и вы должны знать (или вы скоро, если попытаетесь ...), что трудно проверить и подвергнуть ошибкам, потому что у вас есть только 2 области: глобальный и локальный, чтобы функционировать, и это может легко привести к плохо структурированному программированию.
Великие древние нашли лучше иметь меньшие исходные файлы, легче писать, тестировать и читать и понимать, и включают в себя файлы содержат наименьшую часть, необходимую для того, что отдельные источники для общения: как правило, только декларации и константы , редко глобальные переменные.
Вывод - это не что иное, как вы получили в комментариях: да, вы можете, но вы, конечно же, не захотите этого делать.
Вы не хотите включать файл C в другой файл C. Это очень плохая практика, и это действительно уродливо. – Maroun
Да, можно добавить исходный файл C в другой исходный файл C (в отличие от файлов заголовков). Нет, вам очень редко нужно это делать. Для возможного исключения см. [Как проверить статическую функцию?] (Http://stackoverflow.com/questions/593414/how-to-test-a-static-function/593423#593423). –
См. Также [Как связать несколько файлов реализации в C] (http://stackoverflow.com/questions/15622409/how-to-link-multiple-implementation-files-in-c/) и [Должен ли я использовать '# include' в заголовках] (http://stackoverflow.com/questions/1804486/should-i-use-include-in-headers/). –