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:

  1. O que são cabeçalhos pré-compilados?

  2. 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?

Foi útil?

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.

  1. Ver MSDN
  2. 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.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top