Definição extern

Sintaxe:

extern tipo_variável nome_variável


Quando o sistema é separado em vários programas, pode-se ter o problema de acesso a certas variáveis globais, pois a definição da mesma pode estar em um programa fonte e é necessário acessar estas variáveis em outro programa fonte.

Como na Linguagem C deve-se sempre definir uma variável antes de usá-la, quando ocorrer á situação acima descrita deve ser indicado no programa que irá usar a variável que a mesma está definida em outro programa.

Para se fazer isto basta colocar a palavra extern na frente da definição da variável juntamente com a definição do seu tipo e nome. Feito isto está sendo indicado para o compilador o necessário para que não sejam gerados erros, e indicado que a variável já foi definida em outro arquivo fonte.

Vejas o exemplos do programa principal e programa auxiliar:

/* programa extern_principal.c */
 
#include <stdio.h>
void imprime_soma (void); /* Declaração do protótipo da função. Mesmo que a função não esteja no código fonte, 
                             é importante "informar" ao compilador que esta função existe, senão ocorrerá erro
                             na compilação */
 
int iValor_a; /* Declaração das variáveis públicas, ou seja, elas estarão disponíveis para uso em todo programa */
int iValor_b;
 
int main (void)
{
   int iResultado;
 
   printf ("Entre com os valores:");
   scanf ("%d %d", &iValor_a, &iValor_b);
   imprime_soma();
 
   return 0;
}
/* programa extern_auxiliar.c */
 
#include <stdio.h>
extern int iValor_a; /* Declarando que EXISTEM, em outro programa, as variáveis públicas, ou seja, elas estarão disponíveis para uso em todo o programa. */
extern int iValor_b;
 
void imprime_soma(void)
{
   printf ("Soma %d\n", iValor_a + iValor_b); /* uso das variáveis públicas */
   return;
}

Marcos Laureano 2008/05/13 17:45

extern.txt · Última modificação: 2008/05/15 14:57 por laureano
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0