Originariamente inviato da duonovembre
un'altra domanda: una variabile e' intesa come globale se viene dichiarata all'inzio del file o se viene dichiarata in un .h?
Non confondere dichiarazione con definizione: puoi dichiarare una variabile globale innumerevoli volte, ma definirla una sola volta.
Una variabile globale devi dichiararla prima di utilizzarla. Serve per dire al compilatore: "Hey guarda che adesso utilizzerò una cosa che è definita altrove". Perciò onde evitare di dichiararla innumerevoli volte prima del suo utilizzo (anche in maniera ripetitiva), si preferisce dichiararla all'interno di un *.h che verrà incluso dagli *.c che ne abbisognano.
Puoi definirla una sola volta, definendola fuori da qualunque funzione, in un qualunque file del progetto. Potresti formalmente definirla anche in un *.h a patto che quell' *.h sia incluso una sola volta da un solo *.c del progetto.
Praticamente la si definisce in un *.c e in un *.h la si dichiara
Ad esempio:
Codice PHP:
/*
* file "MyGlobal.h"
*/
extern int gCounter; /* dichiarazione della variabile globale gCounter */
Codice PHP:
/*
* file "MyGlobal.c"
*/
#include "MyGlobal.h"
int gCounter = 123; /* definizione ed inizializzazione della variabile globale gCounter */
Codice PHP:
/*
* file "MyMain.c"
*/
#include <stdio.h>
#include "MyGlobal.h"
int main (void){
printf ("gCounter: %d;\n", gCounter);
return 0;
}
leggiti anche il seguente thread:
http://forum.html.it/forum/showthrea...readid=1177734