Domanda

Ho un progetto di esempio (non la mia) che è in Visual C++ 6.Sto cercando di convertirlo in Visual Studio 2008.

Il vecchio progetto è intestazioni precompilate.Ora le domande sono:

  1. Quali sono le intestazioni precompilate?

  2. Dal momento che il vecchio progetto è intestazioni precompilate.Userò anche loro in Visual Studio 2008 (nuovo progetto).Ma mi dà errore dicendo che "Hai dimenticato di includere stdafx.h", per risolvere il problema, mi include "stdafx.h" in ogni file di origine.Che ha funzionato perfettamente.Ma il vecchio progetto non è stato compreso "stdafx.h" in ogni file?Quindi come posso opt-out include "stdafx.h" in ogni file di origine.Poiché non tutti i file di origine devono includere definiti nel file "stdafx.h", solo pochi non.Come si fa?

EDIT: COME FACCIO A EXLCUDE ALCUNI FILE UTILIZZANDO L'INTESTAZIONE PRECOMPILATA?

È stato utile?

Soluzione

Quali sono le intestazioni precompilate?

Spesso C++ source file di includere le intestazioni da librerie esterne.In Windows si includono windows.h.Questi file di intestazione può essere molto grande e prendere tempo per elaborare.Ogni volta che si compila un file C++ il compilatore deve leggere ed elaborare migliaia di righe da questi file di intestazione.Ma le librerie esterne non cambia e si può risparmiare un sacco di tempo, se è solo elaborare questi file una volta e salvare il risultato.

Un'intestazione precompilata è semplicemente un gruppo di file di intestazione che è stato elaborato per una forma intermedia che può essere successivamente utilizzato dal compilatore di nuovo e di nuovo.

Intestazioni precompilate in Visual C++

In Visual C++ è consuetudine #include tutti i tuoi non modifica i file di intestazione in stdafx.h.Quindi istruire il compilatore per creare l'intestazione precompilata stdafx.pch durante la compilazione stdafx.cpp che non fa nulla, ma sono stdafx.h.Se si desidera utilizzare l'intestazione precompilata in un altro .cpp file da includere stdafx.h come il file e indicare al compilatore di utilizzare stdafx.pch per la vostra intestazione precompilata.

Se si ottiene un errore che non inclusa stdafx.h devi semplicemente indicare al compilatore di non utilizzare un'intestazione precompilata per quel particolare file di origine.(O è possibile includere stdafx.h.)

Intestazione precompilata le impostazioni per i singoli file di origine

Visual C++ consente di controllare il compilatore impostazioni per l'intero progetto e per i singoli file.Per accedere alle singole proprietà, selezionare il file di origine in esplora soluzioni, fare clic su di esso e selezionare Proprietà dal menu di scelta rapida.Le opzioni per le intestazioni precompilate sono trovato a Proprietà Di Configurazione => C/C++ => Intestazioni Precompilate.Se si modificano queste impostazioni, spesso è necessario fare per tutte le configurazioni (ad es. Debug e Rilascio).

Quando si utilizzano intestazioni precompilate si avrà un impostazione per l'intero progetto, che indica al compilatore di utilizzare stdafx.pch per l'intestazione precompilata.Il stdafx.cpp individuale impostazioni che indica al compilatore di generare stdafx.pch, e se si dispone di alcuni file di origine che non includono stdafx.h è possibile impostare le impostazioni individuali su questi per non utilizzare le intestazioni precompilate.

Altri suggerimenti

Quando si compila il codice, il compilatore deve guardare in tutte le #incluse le intestazioni di sapere come compilare il codice .file cpp.

Con progetti di grandi dimensioni (o quelli che utilizzano librerie come MFC) queste intestazioni possono ottenere enormi, e quindi prendere un lungo periodo di tempo per la compilazione.

Perché la maggior parte di queste intestazioni non si cambia spesso (se non sempre), è possibile ottenere il compilatore "precompila" li - li elabora e salva il suo stato in una intestazione precompilata.La prossima volta che si compila, non ha bisogno di leggere e compilare tutti coloro intestazioni di nuovo, così è molto più veloce.

Un requisito di Visual Studio è che se si utilizza un'intestazione precompilata, esso deve essere incluso in ogni file nel progetto.

Se il progetto è piccolo, o non si può costruire spesso, allora si può solo disattivare il "intestazione precompilata" (nella finestra di impostazioni di progetto.Questo vale per il tutto progetto).L'unico effetto che si ottiene è che si può compilare più lentamente.O lasciare l'opzione attivata e basta aggiungere #include "stdafx.h" come il primo includere in ogni file.

  1. Vedere MSDN
  2. Di solito.è necessario includere "stdafx.h" in ogni file cpp.Il punto è che sono precompilati, e non avete bisogno di preoccuparsi che non tutti sono utilizzati nel cemento file.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top