Discussione:
differenza tra "const" e "static const"
(troppo vecchio per rispondere)
Pippo
2008-11-27 14:44:57 UTC
Permalink
sto' usando un microcontrollore con un compilatore c.

se dichiaro:


static unsigned short const = 10;

e

unsigned short const = 10;



cosa cambia al compilatore c ?
secondo me niente.sara' una costante sempre presente all'interno del
main e delle sottofunzioni credo.


mi date un parere ?

grazie

PippoPippo
Giovanni
2008-11-27 15:54:02 UTC
Permalink
Post by Pippo
sto' usando un microcontrollore con un compilatore c.
static unsigned short const = 10;
e
unsigned short const = 10;
cosa cambia al compilatore c ?
Che si incavola perché ad entrambe manca il nome della variabile
('const' è una keyword del C.

static unsigned short const var = 10;
e
unsigned short const var = 10;
Post by Pippo
secondo me niente.sara' una costante sempre presente all'interno
del main e delle sottofunzioni credo.
La prima definizione della variabile var ha come scopo il solo oggetto
compilato in cui viene dichiarata (cioè non viene esportata). La
seconda viene esportata ed avrà come scopo tutto il programma.

Se il programma è contenuto in un unico file le due definizioni sono
equivalenti, se invece viene sviluppato su molti file e vuoi che la
variabile sia utilizzabile da tutti i file deve essere usata la
seconda definizione assieme alla dichiarazione (con 'extern') nei file
che la devono usare (oppure in un header file).

Ciao
Giovanni
--
A computer is like an air conditioner,
it stops working when you open Windows.
Registered Linux user #337974 < http://giovanni.homelinux.net/ >
brix99luftballons
2008-11-27 16:03:38 UTC
Permalink
Post by Pippo
static unsigned short const = 10;
E' una variabile PRIVATA visibile solo nel modulo in cui
viene definita.
Post by Pippo
e
unsigned short const = 10;
E' una variabile GLOBALE visibile all' intero programma
ovvero in tutti i moduli.
Nei moduli in cui non viene definita va dichiarata come
external (oppure messa in "extern".h ;-) ):
extern unsigned short const;

B.

Loading...