В чем разница между исходным файлом и единицей перевода?
Какая разница между терминами "исходный файл" и "единица перевода"?
Ответ 1
Из стандарта С++:
Исходный файл вместе со всеми заголовками и исходными файлами, включенными в директиву предварительной обработки #include меньше любой исходной строки, пропущенной любой из условных инструкций предварительной обработки включения, называется единицей трансляции.
Ответ 2
"Единица перевода" - это исходный файл, плюс любые заголовки или другие исходные файлы, которые он включает, плюс любые файлы, включенные в ОНИ, и так далее. Исходный файл - это только... один исходный файл.
Если это помогает, подумайте о исходном файле как о "предыдущем" препроцессоре, а единица перевода - "после".
Ответ 3
Единица перевода является базовой единицей компиляции в С++. Он содержит:
- все содержимое одного исходного файла после запуска препроцессора
- содержимое любых файлов заголовков, прямо или косвенно связанных с ним
- минус любые строки, игнорируемые с помощью условных инструкций предварительной обработки
Единая единица перевода скомпилируется в объектный файл, библиотеку или исполняемую программу.
Исходный файл, напротив, является автономным файлом, как и любой другой файл в вашей файловой системе. После компиляции он может быть компонентом единицы перевода, как указано выше.