Eu estava lendo na época o "C ++ eficaz", escrito por Meyers, e me deparei com o termo "unidade de tradução".
Alguém poderia me dar uma explicação sobre:
1) O que exatamente é
2) Quando devo considerar usá-lo ao programar com C ++
3) Se estiver relacionado apenas ao C ++, ou pode ser usado com outras linguagens de programação
Eu já posso usá-lo sem conhecer o termo ....
Respostas:
A partir daqui : ( link da máquina de retorno )
fonte
Uma unidade de tradução é, para todos os efeitos, um arquivo (.c / .cpp), após a conclusão, incluindo todos os arquivos de cabeçalho.
http://msdn.microsoft.com/en-us/library/bxss3ska%28VS.80%29.aspx
fonte
Uma pergunta difícil de responder definitivamente. O padrão C ++ declara:
Portanto, para a maioria das intenções e propósitos, uma unidade de tradução é um único arquivo de origem C ++ e o cabeçalho ou outros arquivos incluídos pelo mecanismo #include do pré-processador.
Em relação às suas outras perguntas:
Você não pode deixar de considerá-lo - as unidades de tradução são a base de um programa C ++.
Outras línguas têm conceitos semelhantes, mas sua semântica será sutilmente diferente. A maioria dos outros idiomas não usa um pré-processador, por exemplo.
fonte
O livro deixa claro o suficiente. Quando Meyers se refere a uma "unidade de tradução", ele significa um arquivo de código-fonte.
fonte
Além do ODR, a unidade de tradução é importante na definição de namespaces não nomeados, que substitui um dos antigos usos de "estático".
Acho que ainda não tenho pontos suficientes para adicionar um comentário na resposta superior.
fonte
Uma unidade de tradução é um código que é passado para o compilador propriamente dito. Isso normalmente significa que a saída está executando o pré-processador no arquivo .c.
fonte
Os programas C e C ++ consistem em um ou mais arquivos de origem, cada um dos quais contém parte do texto do programa. Um arquivo de origem, juntamente com seus arquivos de inclusão (arquivos incluídos usando a diretiva de pré-processador #include), mas não incluindo seções de código removidas por diretivas de compilação condicional, como #if, é chamado de "unidade de tradução".
fonte
De acordo com o MSDN : os programas C e C ++ consistem em um ou mais arquivos de origem, cada um dos quais contém parte do texto do programa. Um arquivo de origem, juntamente com seus arquivos de inclusão (arquivos incluídos usando a diretiva de pré-processador #include), mas não incluindo seções de código removidas por diretivas de compilação condicional como #if, é chamado de "unidade de tradução".
fonte
Cada arquivo cpp / c (implementação) será convertido em uma unidade de tradução (por exemplo, arquivo de objeto (.obj)). Os cabeçalhos no arquivo cpp serão substituídos pelo texto real dos arquivos de cabeçalho.
fonte
Como já foi dito, uma unidade de tradução é basicamente o conteúdo de um arquivo de origem após o pré-processamento. É a melhor produção na gramática da linguagem; você só precisaria se preocupar com isso se estivesse escrevendo um compilador C ou C ++.
fonte
Na minha opinião, uma "unidade de tradução" é tipicamente um único arquivo de origem "pós-pré-processamento". Você pode obter mais detalhes nesta página do MSDN. http://msdn.microsoft.com/en-us/library/bxss3ska(v=vs.80).aspx
fonte