Newsgroup: it.comp.lang.c++
Titolo: Forse il compilatore mi odia?

Scusate, ma mi si stà presentando un problema a cui non mi so dare risposta.
In pratica ho un warning:
Warn :appoggio.h(6,2):Cannot create pre-compiled header: initialized data in
header
Info :Linking C:\Tesi\main.exe
Il file a cui si riferisce è un file appoggio.h che è "incluso" in un altro
file.h.
Sarebbe a dire che ho un file global.h fatto cosi:
#define max_size 64
#define n_dup 3
#include "appoggio.h"
#include  "packet.cpp"
#include  "sack_pac.cpp"
#include  "mplx2.cpp"
#include  "ack_list.cpp"
multiplexer mplx;
ack_list    list;
ed appoggio.h è fatto cosi:
#define null_seg 0
#define data_seg 1
#define dummy_seg 2
char a;
int n_conn, rwnd;
double RTO, RTT;
int mpx_size;
double t_end;
double DT, p_loss;
typedef unsigned long int PID;
unsigned long int nt_seg;
FILE *file_out;
FILE *receiver_file;
FILE *sender_file;
Aggiungo che nei file .cpp sono dichiarate classi, metodi.... ecc, ecc.
La domanda che volevo fare è se è lecita una inclusione di un file.h
all'interno di un altro file.h.
Forse è per questo che mi da il warning?
Grazie .

 ack_list    list;
In questo modo definisci due variabili (oggetti) globali che verranno creati in
tutti i moduli in cui includi il file .h : dubito che il linker non s'incazzi.
Ciao Fbf.

 ack_list    list;
lo includo una volta sola....
In realtà viene fatto per dare la visibilità di questi oggetti in tutti i
file .cpp che sono inclusi nel file in cui c'è main()
subito dopo #include global.h..... che è appunto il file .h che ho fatto
vedere, cioè:
------GLOBAL.h-----
#define max_size 64
#define n_dup 3
#define null_seg 0
#define data_seg 1
#define dummy_seg 2
#include "appoggio.h"
#include  "packet.cpp"
#include  "sack_pac.cpp"
#include  "mplx2.cpp"
#include  "ack_list.cpp"
multiplexer mplx;
ack_list    list;
------FINE-----
Questo è lo spirito del progetto.... mi dai qualche dritta ???
Te ne sarò molto grato

Forse è per questo che mi da il warning?
No, ti sta solo segnalando che nel file .h dichiari e
inizializzi qualche variabile e per questo non riesce a
precompilare l'header. Tuttavia non significa che cio` sia
necessariamente un errore (ma puo` esserlo).
Ti consiglio di mettere nell'header solo la dichiarazione
(eventualmente usa extern) e definire la variabile solo
nel file .cpp.
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------

 ha scritto nel messaggio
news:8jvmo4$ecm$1...@nslave2.tin.it...
| Rispondo alle tue osservazioni:
| includo i files .cpp perchè
| a) me l'hanno dato cosi ed è una tesi di laurea già svolta
...
Finalmente si spiega il perchè di tanti "geni" accademici...
--
 The code was willing
 It considered your request,
 But the chips were weak.

Questo è lo spirito del progetto.... mi dai qualche dritta ???
Ti consiglio di eliminare le inclusioni di file .cpp. Se non hanno
un corrispondente file header, separali in file header e file di
implementazione. In tal modo ti cauteli da potenziali
futuri problemi.
Attenzione... prima di procedere verifica quali conseguenze
possono esserci sul funzionamento del programma.


Finalmente si spiega il perchè di tanti "geni" accademici...
E` desolante notare quanto molti studenti siano convinti che
basti dare l'esame[1] per ritenersi degli esperti!
Paolo
[1] sempre ammesso che non ricevano la soluzione
      via NG o altro.
