Domanda

Io la vedo in modo molto codice, tra cui stdafx.h.Dire, faccio non vuoi intestazioni precompilate.E Io sarà includere tutte le intestazioni di sistema io manualmente.In quel caso c'è qualche altra ragione che dovrebbe essere consapevoli di dove ho bisogno di stdafx.h?

È stato utile?

Soluzione

Se non si desidera utilizzare le intestazioni precompilate, quindi non c'è alcun punto di utilizzare uno standard include file - questo rallenterà la build per ogni file che lo include e causare loro di includere materiale extra che non hanno bisogno . Sbarazzarsi di essa e solo includere le intestazioni di cui hanno bisogno.

Altri suggerimenti

Anche senza intestazioni precompilate stdafx.h potrebbero essere utile in quanto i gruppi intestazione include e definizioni comuni per tutti i file.

È possibile, naturalmente, scegliere di ripetere tutte queste definizioni in ogni file. stdafx.h non è strettamente necessario.

stdafx.h è solo un altro file di intestazione. Se sei caduto non è necessario tatto per non comprendere e rimuoverlo dal progetto.

Tuttavia è abbastanza tipico di avere un file come stdafx.h esattamente per le intestazioni precompilate di lavorare e di non includono tutte le cose manualmente in ogni file sorgente.

È possibile utilizzare le intestazioni precompilate (che sono una buona cosa) senza l'utilizzo di stdafx.h (I esecra troppo).Ho solo l'accesso a VC++ 6.0 ma che vai a Impostazioni di Progetto|C/C++|Intestazioni Precompilate e selezionare "automatico uso di intestazione precompilata", ma lasciare il "compilato tramite" scatola vuota.

Come altri hanno detto: se non hai bisogno di intestazioni precompilate, non si ha realmente bisogno stdafx.h. E di utilizzarlo solo per gruppo comune comprende è abbastanza cattiva pratica, in realtà.

In realtà, anche quando si utilizza le intestazioni precompilate, è buona pratica includere le intestazioni il processo in realtà ha bisogno dopo stdafx.h (o precompiled.h o come volete chiamarlo) - insieme con #ifdef magia nella vostra intestazione precompilata per disattivare l'utilizzo di PCH.

Perché? Al fine di verificare le dipendenze dei moduli. Essere in grado di disattivare il PCH consente di catturare se siete tra cui moduli necessari o no, e si può quindi scrivere uno strumento per controllare i interdipendenze modulo analizzando il vostro cpp e .h (esclusa l'intestazione PCH, ovviamente).

So che questo è un vecchio thread, ma ho pensato di passare il mio parere ai lettori. Ho trovato questo nel 2017, quindi sono sicuro che non sono l'unico che sarà qui.

C'è un vantaggio di utilizzare le intestazioni precompilate, che possono essere trascurati da altri perché hanno usato la loro pratica per molti anni. standard C ++ è evoluto notevolmente. Invece di includere vettore in 20 file che si potrebbe aver bisogno e ed o qualsiasi altra cosa, si utilizza un file PCH e il compilatore ha a che fare meno lavoro, e che rende facce felici per tutti. Inoltre è possibile inserire le macro comuni in là, come ad esempio verificare e affermare e oggetti di classe intelligenti. Non mettere le intestazioni di classe in là, non avrebbe senso per questo, piuttosto la libreria standard o qualcosa che sarà necessario utilizzare a livello globale in un sacco di posti, come le macro che ho citato.

fondamentalmente realizzare questo, includendo le intestazioni avete bisogno in ogni file è necessario, come iostream, string, e vettoriale, si sta effettivamente compilando che ogni singola volta come linea al file. Includere un "Pre compilato" colpo di testa, anche solo il nome dovrebbe suonare un campanello lì.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top