visual-studio - how - stdafx.h not found visual studio 2017




O que é “stdafx.h” usado no Visual Studio? (3)

"Stdafx.h" é um cabeçalho pré-compilado. Ele inclui o arquivo para arquivos de inclusão do sistema padrão e para arquivos de inclusão específicos do projeto que são usados ​​com freqüência, mas são alterados com pouca freqüência. Isso reduz o tempo de compilação e o processamento desnecessário.

Cabeçalho pré-compilado O stdafx.h é basicamente usado no Microsoft Visual Studio para permitir que o compilador conheça os arquivos que já foram compilados e não é necessário compilá-los do zero. Você pode ler mais sobre isso

http://www.cplusplus.com/articles/1TUq5Di1/

https://docs.microsoft.com/en-us/cpp/ide/precompiled-header-files?view=vs-2017

Um arquivo chamado stdafx.h é gerado automaticamente quando inicio um projeto no Visual Studio 2010. Eu preciso criar uma biblioteca C ++ de plataforma cruzada, portanto, não posso / não posso usar esse arquivo de cabeçalho.

O que é stdafx.h usado para? Tudo bem que eu acabei de remover esse arquivo de cabeçalho?


É um "arquivo de cabeçalho pré-compilado" - quaisquer cabeçalhos incluídos no stdafx.h são pré-processados ​​para economizar tempo durante as compilações subsequentes. Você pode ler mais sobre isso aqui no MSDN .

Se você estiver criando um aplicativo de plataforma cruzada, marque "Projeto vazio" ao criar seu projeto e o Visual Studio não colocará arquivos no seu projeto.


Todos os compiladores C ++ têm um sério problema de desempenho para lidar. Compilar o código C ++ é um processo longo e lento.

Compilar cabeçalhos incluídos no topo de arquivos C ++ é um processo muito longo e lento. Compilar as enormes estruturas de cabeçalho que fazem parte da API do Windows e de outras grandes bibliotecas de APIs é um processo muito , muito longo e lento. Ter que fazer isso de um lado para o outro para cada arquivo de origem único do Cpp é uma sentença de morte.

Isso não é exclusivo do Windows, mas um antigo problema enfrentado por todos os compiladores que precisam compilar em uma API grande como o Windows.

O compilador da Microsoft pode amenizar esse problema com um truque simples chamado cabeçalhos pré-compilados . O truque é bem esperto: embora cada arquivo CPP possa potencialmente e legalmente dar um significado diferente à cadeia de arquivos de cabeçalho incluídos no topo de cada arquivo Cpp (por coisas como ter macros diferentes # definir antes dos includes, ou incluindo os cabeçalhos em ordem diferente), na maioria das vezes não é o caso. Na maioria das vezes, temos dezenas ou centenas de arquivos incluídos, mas todos eles têm o mesmo significado para todos os arquivos Cpp que estão sendo compilados em seu aplicativo.

O compilador pode economizar muito tempo se não precisar começar a compilar todos os arquivos Cpp, além de suas dúzias de inclusões, literalmente, do zero todas as vezes.

O truque consiste em designar um arquivo de cabeçalho especial como ponto de partida de todas as cadeias de compilação, o chamado arquivo "cabeçalho pré-compilado", que é comumente um arquivo chamado stdafx.h simplesmente por razões históricas.

Simplesmente liste todos os seus grandes cabeçalhos enormes para suas APIs em seu arquivo stdafx.h, na ordem apropriada, e então inicie cada um dos seus arquivos CPP no topo com um #include "stdafx.h" , antes de qualquer conteúdo significativo (apenas sobre a única coisa permitida antes é os comentários).

Sob essas condições, em vez de começar do zero , o compilador começa a compilar os resultados já salvos da compilação de tudo em stdafx.h .

Não acredito que esse truque seja exclusivo dos compiladores da Microsoft, nem acho que tenha sido um desenvolvimento original.

Para Microsoft compiladores, a configuração que controla o uso de cabeçalhos pré-compilados é controlada por um argumento de linha de comando para o compilador: /Yu "stdafx.h" . Como você pode imaginar, o uso do nome do arquivo stdafx.h é simplesmente uma convenção; você pode mudar o nome se assim desejar.

No Visual Studio 2010, essa configuração é controlada a partir da GUI, clicando com o botão direito do mouse em um projeto CPP, selecionando 'Propriedades' e navegando até "Propriedades de configuração \ C / C ++ \ Cabeçalhos pré-compilados". Para outras versões do Visual Studio, o local na GUI será diferente.

Observe que, se você desabilitar os cabeçalhos pré-compilados (ou executar seu projeto por meio de uma ferramenta que não os suporta), isso não tornará o seu programa ilegal; Significa simplesmente que sua ferramenta irá compilar tudo do zero todas as vezes.

Se você estiver criando uma biblioteca sem dependências do Windows, poderá comentar ou remover facilmente #includes do arquivo stdafx.h. Não há necessidade de remover o arquivo em si, mas é claro que você também pode fazê-lo, desabilitando a configuração do cabeçalho de pré-compilação acima.





stdafx.h