В то время я читал «Эффективный C ++», написанный Мейерсом и натолкнулся на термин «единица перевода».
Может ли кто-нибудь дать мне объяснение:
1) Что именно это
2) Когда я должен рассмотреть возможность его использования при программировании на C ++
3) Если он связан только с C ++ или может использоваться с другими языками программирования
Я мог бы уже использовать его, не зная термина ....
Ответы:
От сюда : ( Вайбак машина ссылка )
источник
Единицей перевода для всех намерений и целей является файл (.c / .cpp), после того как он завершен, включая все файлы заголовков.
http://msdn.microsoft.com/en-us/library/bxss3ska%28VS.80%29.aspx
источник
Трудный вопрос, чтобы ответить окончательно. Стандарт C ++ гласит:
Таким образом, для большинства целей и задач единица перевода - это отдельный исходный файл C ++ и заголовок или другие файлы, которые он включает с помощью механизма препроцессора #include.
По поводу других ваших вопросов:
Вы не можете не учитывать это - единицы перевода являются основой программы на C ++.
У других языков есть подобные понятия, но их семантика будет немного отличаться. Например, большинство других языков не используют препроцессор.
источник
Книга проясняет это достаточно. Когда Мейерс ссылается на «модуль перевода», он имеет в виду файл исходного кода.
источник
В дополнение к ODR, модуль перевода важен в определении безымянных пространств имен, который заменяет одно из старых применений «статического».
Я думаю, у меня все еще не хватает очков, чтобы добавить комментарий под верхним ответом.
источник
Единица перевода - это код, который передается компилятору. Как правило, это означает результат работы препроцессора в файле .c.
источник
Программы на C и C ++ состоят из одного или нескольких исходных файлов, каждый из которых содержит некоторый текст программы. Исходный файл вместе с включаемыми файлами (файлы, включаемые с использованием директивы препроцессора #include), но не включающий в себя фрагменты кода, удаленные директивами условной компиляции, такими как #if, называется «модулем перевода».
источник
Согласно MSDN : программы на C и C ++ состоят из одного или нескольких исходных файлов, каждый из которых содержит некоторый текст программы. Исходный файл вместе с включаемыми файлами (файлы, включаемые с использованием директивы препроцессора #include), но не включающий в себя фрагменты кода, удаленные директивами условной компиляции, такими как #if, называется «модулем перевода».
источник
Каждый файл cpp / c (реализация) будет преобразован в заголовочные единицы перевода (т. Е. Объектный файл (.obj)) в файле cpp будет заменен фактическим текстом из файлов заголовков.
источник
Как уже говорили другие, единица перевода - это в основном содержимое исходного файла после предварительной обработки. Это самая лучшая постановка в языковой грамматике; вам нужно будет беспокоиться только об этом, если вы пишете компилятор C или C ++.
источник
На мой взгляд, «единица перевода» обычно представляет собой один исходный файл «после предварительной обработки». Вы можете получить более подробную информацию на этой странице MSDN. http://msdn.microsoft.com/en-us/library/bxss3ska(v=vs.80).aspx
источник