Я провел свою профессиональную жизнь как разработчик С#. Будучи студентом, я иногда использовал C, но не изучил его модель компиляции. Недавно я прыгнул на подножку и начал изучать Objective-C. Мои первые шаги только позволили мне узнать о дырах в моих ранее существовавших знаниях.
Из моих исследований, компиляция C/С++/ObjC требует, чтобы все встреченные символы были предварительно объявлены. Я также понимаю, что строительство - это двухэтапный процесс. Сначала вы компилируете каждый отдельный исходный файл в отдельные файлы объектов. Эти объектные файлы могут иметь undefined "символы" (которые в целом соответствуют идентификаторам, объявленным в файлах заголовков). Во-вторых, вы связываете файлы объектов вместе, чтобы сформировать окончательный вывод. Это довольно подробное объяснение, но оно удовлетворяет моему любопытству. Но я также хотел бы иметь аналогичное понимание на высоком уровне процесса сборки С#.
Q: Как процесс сборки С# обойти необходимость в файлах заголовков? Я бы предположил, что, возможно, этап компиляции делает два прохода?
(Изменить: следующий вопрос здесь Как C/С++/ Objective-C сравнить с С#, когда дело доходит до использования библиотек?)