Domenii de vizibilitate în C (Scope)
Am un exemplu simplu care arată domeniile de vizibilitate a variabilelor în embedded C:
<br />int x; /* file scope */<br /><br />void f (int y); /* y has function prototype scope */<br /><br />void f (int y) /* y has block scope */<br />{<br /> int z; /* block scope */<br /> {<br /> int x; /* block scope, different object than outer x */<br /> int z; /* block scope */<br /> } /* scope of x and z end here */<br />} /* scope of y and z and here */<br /><br />
Variabilele
O variabilă declarată în interiorul unui bloc de acolade este vizibilă doar în acel bloc şi în toate blocurile de cod din interiorul blocului unde a fost declarată variabila.
O variabilă declarată în interiorul unei funcţii este vizibilă doar în aceea funcţie dar în toate blocurile de cod din acea funcţie.
O variabilă declarată în interiorul unui fişier C este vizibilă doar în acel fişier dar în toate funcţiile şi blocurile de cod din acel fişier.
O variabilă declarată în interiorul unei funcţii este vizibilă doar în aceea funcţie dar în toate blocurile de cod din acea funcţie.
O variabilă declarată în interiorul unui fişier C este vizibilă doar în acel fişier dar în toate funcţiile şi blocurile de cod din acel fişier.
MISRA
Există şi o regulă MISRA care legiferează denumirea variabilelor :
“MISRA-C:2004, Rule 5.2: Identifiers in an inner scope shall not use the same name as an identifier in an outer scope, and therefore hide that identifier.”