Newsgroup: it.comp.lang.c++
Titolo: VC++5.0: Precompiled Header e altri errori

Ho creato un progetto MFC Dialog Based (con il wizard) dove ho importato
codice sviluppato a parte. Non ho copiato i file sotto la directory di
sviluppo creata da VC ma ho aggiunto un paio di folder al progetto (App\inc
e App\src) dove ho aggiunto solo i riferimenti ai miei file, lasciandoli
nelle directory originali.
Purtroppo sono andato incontro ad infiniti ed apparentemente inspiegabili
problemi fi compilazione. Prima VC ha incominciato a darmi problemi su gli
header precompilati. In alcuni file (quelli "esterni") ha incominciato a
riportare l'errore:
C:\Prj\GC2K\App\env\src\vcs.cpp(94) : fatal error C1010: unexpected end of
file while looking for precompiled header directive
Poi ha cominciato a dirmi che non riusciva a trovare gli header
precompilati (stdafx.pch), questa volta sul file della classe dialogo
creato dal wizard, malgrado non abbia modificato assolutamente nulla nei
file del wizard (per il momento i mei file sono solo zavorra).
Preso dalla disperazione, ho disabilitato l'uso degli header precompilati,
ottenendo (dopo una lunga ricompilazione totale) una valanga di errori in
uno dei miei file, causati dalla mancata inclusione di un header file.
Con mancata inclusione intendo dire che la direttiva #include e' la prima
linea del file (a parte i commenti), il compiltore non segnala nessun
errore realtivo al file .h (quindi include) ma i tipi definiti nel file non
vengono riconosciuti (il file e' corretto - incluso in un altro sorgente
funziona). Questo malgrado il .h in questione non includa nessun'altro file
e sia l'unico file incluso dal .cpp che da errore. Ho provato anche ad
inserire come prima riga del .h una direttiva #error: il compilatore la
ignora come se non includesse affatto il file.
Altro tentativo: ho provato a cambiare nome nella direttiva include facendo
riverimento ad un file inesistente e ho ottenuto quello che ci mi
aspettavo: "No such file or directory". 
Quindi la direttiva viene processata, il file viene trovato, ma per qualche
motivo non viene processato. Eppure la prima (in assouto) linea del .h e'
un bel #error!
Qualche idea ?
Grazie
-- 
Alberto Chessa 
ach...@fiar.finmeccanica.it


Per quanto riguarda gli header precompilati, il Visual C 5.0 impone delle
restrizioni (modificabili comunque) quando usi le MFC. Il primo file header
di ogni file c o cpp DEVE (e sottolineo DEVE) essere l'header STDAFX.H che
viene genrato dal Wizard e che si trova nella cartella del tuo progetto.
Questo perche' nelle impostazioni del progetto generate dal Wizard quello e'
il file usato per i PCH e quello e' l'include che viene cercato per il loro
uso. Infatti, il primo file a venire compilato e' STDAFX.CPP che contiene
esclusivamente l'inclusione di STDAFX.H. La compilazione di questo file
genera il file STDAFX.PCH che verra' usato durante la compilazione degli
altri.
Per quanto riguarda l'altro errore che segnali non so che dirti, a parte che
mi pare un comportamento anomalo. Assicurati che non ci siano degli #IFDEF
errati nel tuo file di inclusione.
Ciao,
Stefano

Sono un appasionato di programmazione c e c++ e stò cercando della
documentazione riguardante le seriali e la parallela bidirezionale.
Se per caso trovi qualcosa in merito la mia email è 
sigm...@tin.it
Ti ringrazio anticipatamente.