Quella dichiarazione che hai fatto è una definizione ... alloca cioè memoria per la variabile.Originariamente inviato da Il Pazzo
scusa ma cosa intendi per definizioni? la dichiarazione?
Allora.. io nel mio file d'include ho solo messo quei prototipi di funzione e quella dichiarazione (vedi il primo messaggio... lì c'è tutto l'header).... non è corretto?
Essendo messa in un header che viene incluso da più sorgenti, ogni modulo oggetto (il file .obj) conterrà la variabile hWnd. A quel punto il linker si trova con più file oggetto che contengono lo stesso simbolo hWnd e ...... bam.
A questo punto mi sorge spontanea una domanda: quella variabile hWnd ti serve che sia unica e globale a tutto il progetto? O che ogni sorgente abbia la "sua" variabile hWnd (distinta dalle altre)??
Se ti serve globale al progetto, allora metti come globale (fuori dalle funzioni) e dentro 1 solo sorgente:
HWND hWnd;
e poi nell'header che tutti includono metti:
extern HWND hWnd;
Se invece vuoi che ogni sorgente abbia la "sua" variabile hWnd, allora puoi mettere nel header:
static HWND hWnd;
... sebbene tale modo di includere una variabile static non mi piaccia per niente!

Rispondi quotando