Newsgroup: it.comp.programmare.win32
Titolo: Header Precompilati

Ciao a tutti,
Ho un problema con BCB 6 Pro.
Da qualche giorno a questa parte durante la compilazione di un progetto,
l'Ide non genera più la cache dei file header precompilati allungando perciò
di molto i tempi di compilazione (adesso per qualsiasi modifica devo
attendere 20-25 minuti!!! ).
Ho controllato nelle opzioni di progetto, nella tab Compiler, sezione
Pre-Compiled Headers ed è specificato il nome per la cache, ma durante la
compilazione non viene creato nessun file all'indirizzo specificato.
Qualche idea ?
Grazie, Zano.

 Qualche idea ?
Inizierei col verificare che prima della direttiva #pragma hdrstop siano
inclusi sempre gli stessi header (e nello stesso ordine) in tutti i moduli
del progetto. Al limite lascia solo #include <vcl.h> prima della direttiva.
Steve.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Steve.
Sto mettendo sottosopra il progetto per strutturare bene i file header, ma
ogni volta che includo il file <Dialogs.hpp> mi da un errore nella
generazione degli header precompilati:

 Steve.
Scusa ... mi sono incasinato .... dicevo :
Sto mettendo sottosopra il progetto per strutturare bene i file header, ma
ogni volta che includo il file <Dialogs.hpp> mi da un errore nella
generazione degli header precompilati:
[C++ Warning] Dialogs.hpp(437): W8058 Cannot create pre-compiled header:
initialized data in header
Perchè ? Come faccio a risolvere il problema ?

 Come faccio a risolvere il problema ?
Tempo fa è successo anche a me, ma non è un problema. Semplicemente non
puoi precompilare quel file. Volendo potresti togliere le inizializzazioni
da Dialogs.hpp e metterle da qualche altra parte, ma essendo un header
"Borland" lo eviterei assolutamente. Non precompilarlo, fine.


 Steve.
Sbattendoci per tre giorni la testa sono riuscito a capire qual'era il
problema che generava quel Warning!!!
Come prima cosa ho provato a fare un progetto vuoto con due unit che
utilizzassero i dialogs; ho strutturato i file header in modo da poterli
raggruppare come unico header precompilato. Risultato: il file Dialog.hpp
viene incluso negli header precompilati senza generare il suddetto
Warning!!!
Allora: ho inziato a confrontare virgola per virgola un backup del mio prj
che non generava il problema con i sorgenti che lo generavano, ed ho provato
a commentare modifica per modifica.
Indovina un po'...
In precedenza avevo sostituito questa dichiarazione:
typedef std::vector<TEIMLProperty*>           TEIMLProperties;
typedef std::vector<TEIMLProperty*>::iterator TEIMLPropertiesIterator;
introducendo una classe (mi serviva l'operatore find... ):
class TEIMLProperties : public vector<TEIMLProperty*>
{
  public :
    TEIMLProperty* find (cStr& name);
};
typedef TEIMLProperties::iterator TEIMLPropertiesIterator;
TEIMLProperty* TEIMLProperties::find (cStr& name)
{
  TEIMLPropertiesIterator it;
  for (it = begin(); it != end(); ++it)
    if ( (**it).name == name )
      break;
  return ( (it !=end()) ? *it : NULL);
};
Una ripristinato il codice precedente gli header vengono precompilati senza
problemi !!!!!
Allora mi domando: ma il Warning che dava il precompilatore cosa centrava
?!?!?!?!??
Zano

 ?!?!?!?!??
E il codice che hai postato cosa c'entra con Dialogs.hpp? Brrr... c'è
qualcos'altro dietro...


 Steve.
Quello che mi domandavo anch'io !!!
Stavolta il compilatore invece che aiutare mi ha portato fuori strada !!!
Ciao Zano.
PS: Per curiosità tu sviluppi in C++ Builder ? Cosa stai sviluppando ?

 Cosa stai sviluppando ?
Ecco in questo periodo specifico non sono su BCB, comunque le applicazioni
sviluppate dipendono dalle richieste... di tutti i tipi comunque.
