Domenii de vizibiliate în C (Scope)

Domenii de vizibilitate în C (Scope)

Am un exemplu simplu care arată domeniile de vizibilitate a variabilelor în embedded C:


int x; /* file scope */

void f (int y); /* y has function prototype scope */

void f (int y) /* y has block scope */
{
  int z; /* block scope */
  {
    int x; /* block scope, different object than outer x */
    int z; /* block scope */
  } /* scope of x and z end here */
} /* scope of y and z and here */

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. 

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."

Etichete

Afișați mai multe

Arhiva

Afișați mai multe