Vés al contingut

Variable externa

De la Viquipèdia, l'enciclopèdia lliure
Aquesta és una versió anterior d'aquesta pàgina, de data 16:06, 14 jul 2012 amb l'última edició de Joutbis (discussió | contribucions). Pot tenir inexactituds o contingut no apropiat no present en la versió actual.

Una variable externa és, en els llenguatges de programació C i C++, una variable declarada amb la paraula clau extern .

Camp d'aplicació

Depenent del context, el terme pot adquirir dos significats diferents. Quan es fa ús del terme per a la declaració d'una variable, extern fa saber al compilador que la variable es trobarà a la taula de símbols d'una altra unitat. S'utilitza per exposar variables pertanyents a un fitxer a un o més fitxers addicionals. La declaració externa no és traduïda pel compilador sinó pel enllaçador, amb això extern és un mecanisme vàlid per instal·lar modularitat a nivell del compilador.

Quan s'utilitza el terme per a la instanciació d'una variable , extern trasllada la variable a la taula de símbols de la unitat de traducció de manera que el símbol pugui ser referenciat des d'altres unitats . Per a això ha d'haver una implementació de la variable marcada com extern en un altre lloc (normalment en el fitxer header).

Dos usos importants de la externalització són: evitar referències circulars (de l'estil de declaracions en seccions en llenguatges com Pascal) i evitar cadenes de dependències compilades.

Les variables externes poden declarar al marge dels blocs de funcions en un fitxer de codi font de la mateixa manera que es declara qualsevol altra variable: especificant el seu tipus i el seu nom. No s'usa cap especificador de classe d'emmagatzematge, la posició de la declaració del fitxer indica la classe d'emmagatzematge extern. La memòria per a aquestes variables s'assigna quan el programa comença a ser executat i roman assignat fins al'acabament del mateix. Per a la majoria d'implementacions en C, cada byte de memòria assignat per una variable externa és inicialitzat a zero.

L'àmbit de variables externes és global, és a dir, tot el codi font al fitxer després de les declaracions. Totes les funcions que segueixen a la declaració poden accedir a la variable externa amb el vostre nom. No obstant això, si es declara una variable local amb el mateix nom, les referències al nom accedeixen a la cèl·lula de la variable local.

Exemple ( C )

fitxer 1:

  int VariableGlobal;//definició
  void una funció (void);//declaració externa implícita
 
  int main (){
    VariableGlobal = 1;
    Una funció ();
    return 0;
 }

fitxer 2:

  extern int VariableGlobal;//declaració externa

  void una funció (void){
   ++VariableGlobal;
 }

En aquest exemple la variable VariableGlobal és definida al fitxer 1. Per utilitzar la mateixa variable al fitxer 2, ha de ser declarada usant el keyword extern . Independentment de la quantitat de fitxers, una variable global només es defineix una vegada, però, ha de ser declarada usant extern en qualsevol fitxer a part d'aquell que conté la definició. Tècnicament, una funció és també externa, però en C i en C++ totes les funcions són considerades externes per defecte i normalment no necessiten ser declarades.

Referències


Enllaços externs

  • (VS.80). Aspx Microsoft C Language Reference: The extern Storage-Class Specifier
  •  PDF. En especial, les seccions 6.2.2 (Linkage of identifiers), 6.2.4 (Storage duration of objects), 6.7.1 (Storage-class specifiers) i 6.9 (External definitions).