Cabeçalhos Pré-Compilados
-
18-09-2019 - |
Pergunta
Eu tenho um exemplo de projeto (não a minha), que está em Visual C++ 6.Eu estou tentando convertê-lo para o Visual Studio 2008.
O mais antigo projeto é utilizar cabeçalhos pré-compilados.Agora as perguntas são:
O que são cabeçalhos pré-compilados?
Desde o antigo projeto é utilizar cabeçalhos pré-compilados.Eu também vou usá-los no Visual Studio 2008 (novo projeto).Mas eu recebo erros dizendo que "Você se esqueceu de incluir stdafx.h", para remediar o problema, eu incluir "stdafx.h" em cada arquivo de origem.Que funcionou perfeitamente.Mas o antigo projeto não foi incluindo "stdafx.h" em cada arquivo?Então, como posso opt-out para incluir "stdafx.h" em cada arquivo de origem.Porque não cada arquivo de origem precisa de arquivos de inclusão definidos no "stdafx.h", só que alguns não.Como isso é feito?
EDITAR: COMO FAÇO PARA EXLCUDE ALGUNS ARQUIVOS USANDO O CABEÇALHO DE PRÉ-COMPILADO?
Solução
O que são cabeçalhos pré-compilados?
Muitas vezes arquivos de origem C++ incluir cabeçalhos de bibliotecas externas.No Windows você incluir windows.h
.Estes arquivos de cabeçalho pode ser muito grande e eles levar algum tempo para processar.Cada vez que você compilar um ficheiro de C++, o compilador tem de ler e processar milhares de linhas de estes arquivos de cabeçalho.Mas as bibliotecas externas não mudam e você pode salvar um monte de tempo se você apenas processar esses arquivos de uma vez e salvar o resultado.
Um cabeçalho de pré-compilado é simplesmente um monte de arquivos de cabeçalho que foi processada para um formulário intermediário que mais tarde pode ser usado pelo compilador de novo e de novo.
Cabeçalhos pré-compilados em Visual C++
No Visual C++ é costume #include
todas as suas não-alterar arquivos de cabeçalho em stdafx.h
.Você, em seguida, instruir o compilador para criar o cabeçalho pré-compilado stdafx.pch
ao compilar stdafx.cpp
que não faz nada, mas incluem stdafx.h
.Se você deseja usar o cabeçalho pré-compilado em outro .cpp
arquivo, você precisa incluir o stdafx.h
como o primeiro arquivo de inclusão e a instruir o compilador a usar stdafx.pch
para o seu cabeçalho pré-compilado.
Se você receber um erro sobre não incluindo stdafx.h
você simplesmente tem que instruir o compilador para não usar um cabeçalho de pré-compilado para um determinado arquivo de origem.(Ou você pode incluir stdafx.h
.)
De cabeçalho pré-compilado configurações individuais para os arquivos de origem
O Visual C++ permite que você controle as configurações de compilador para o projeto inteiro e por arquivos individuais.Para acessar as propriedades individuais que você selecione o arquivo de origem no solution explorer, clique com o direito nele e selecione Propriedades a partir do menu de contexto.As opções para cabeçalhos pré-compilados são encontradas em Propriedades De Configuração => C/C++ => Cabeçalhos Pré-Compilados.Se você modificar essas configurações, muitas vezes você vai querer fazer isso para todas as configurações (por exemplo, Depuração e Lançamento).
Quando você estiver usando cabeçalhos pré-compilados você terá uma configuração de todo o projecto que instrui o compilador a usar stdafx.pch
para o cabeçalho pré-compilado.O stdafx.cpp
terá um indivíduo configurações que instrui o compilador para gerar stdafx.pch
, e se você tem alguns arquivos de origem que não inclui stdafx.h
você pode definir configurações individuais sobre estes não utilizar cabeçalhos pré-compilados.
Outras dicas
Quando você compila o código, o compilador deve procurar todos os cabeçalhos #included para saber como compilar o código no seu arquivo .cpp.
Com grandes projetos (ou que usam bibliotecas como o MFC), esses cabeçalhos podem ficar enormes e, assim, demoram muito tempo para compilar.
Como a maioria desses cabeçalhos não muda com tanta frequência (se é que alguma vez), você pode fazer com que o compilador os "pré -compilie" - isso os processa e salva seu estado em um cabeçalho pré -compilado. Na próxima vez que ele compilar, ele não precisa ler e compilar todos esses cabeçalhos novamente, por isso é muito mais rápido.
Um requisito no Visual Studio é que, se você usar um cabeçalho pré -compilado, ele deve ser incluído em todos os arquivos do projeto.
Se o projeto for pequeno, ou você não o constrói com frequência, poderá desativar a opção "cabeçalho pré -compilado" (nas configurações do projeto. Isso se aplica ao todo projeto). O único efeito que você terá é que ele pode compilar mais lentamente. Ou deixe a opção ativada e apenas adicione #include "stdafx.h", conforme a primeira incluir em cada arquivo.
- Ver MSDN
- Geralmente.você precisa incluir "stdafx.h" em cada arquivo cpp.O ponto todo é que eles são pré-compilados, e você não precisa se preocupar que nem todos eles são usados em alguns de concreto arquivo.