18.08.2013 Views

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

}<br />

static int counter = 1;<br />

printf("Funzione eseguita %d"<br />

" volte\n", counter++);<br />

Esempio di uso di un blocco e di variabili statiche <strong>per</strong> il debugging di un programma:<br />

{<br />

}<br />

static int cnt = 0;<br />

fprintf(stderr, "** debug: cnt=%d v=%d\n",<br />

cnt++, v);<br />

10.7 Variabili extern<br />

Vengono poste automaticamente nella classe di memorizzazioneextern classe le variabili dichiarate<br />

a livello globale, cioè al di fuori di qualsiasi blocco o funzione. Si può accedere al valore di queste<br />

variabili anche all’interno di un blocco o di una funzione.<br />

int var_globale;<br />

int main()<br />

{<br />

extern int var_globale;<br />

...<br />

var_globale = 10;<br />

...<br />

printf("%d", var_globale);<br />

return 0;<br />

}<br />

Se la parola chiave extern viene esplicitamente utilizzata si indica al compilatore che la variabile<br />

viene definita altrove, cioè si dichiara cioè semplicemente l’esistenza di una variabile di quel tipo.<br />

In genere non si usa la extern all’interno di una funzione <strong>per</strong> indicare che la variabile utilizzata<br />

è globale: si usa la variabile e basta, in quanto le variabili globali sono implicitamente disponibili<br />

nella funzione.<br />

L’uso della extern è invece utile quando, in programmi composti da più file, la definizione di<br />

una variabile e/o funzione viene fatta in un file diverso rispetto al file sorgente che la utilizza. In<br />

quest’ultimo file sorgente la dichiarazione diviene extern.<br />

10.8 Inizializzazioni<br />

In assenza di inizializzazioni:<br />

• le variabili globali vengono inizializzate a 0<br />

• le variabili static vengono inizializzate a 0<br />

• le variabili semplici static e globali vengono inizializzate tramite espressioni costanti<br />

107

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!