A palavra-chave extern

As palavras-chaves extern e static são recursos oferecidos pela linguagem C++ para alterar o comportamento dos conceitos local e global, abordados no tópico anterior.

A palavra-chave extern pode ser usada para que um arquivo fonte possa usar uma variável global que se encontra definida em outro arquivo fonte.

O exemplo a seguir trabalha com dois Forms. O primeiro leva um Label e três Buttons. O segundo leva um Label e um Button. Declaramos duas variáveis inteiras globais no primeiro formulário (Form1), as inicializamos e alteramos seus valores conforme o componente que recebe um clique, exibindo o resultado em Label1. No segundo formulário (Form2), através da palavra-chave extern, manipulamos e exibimos o resultado, conforme o componente que recebe o clique do mouse:

Unit1.h 

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
int a, b;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
a = 1;
b = 2;        
        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
a = 100;
b = 200;
        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Label1Click(TObject *Sender)
{
Label1->Caption = a + b;
        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Form2->ShowModal();

}
//---------------------------------------------------------------------------





Unit2.h


//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
extern int a;
extern int b;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm2::Label1Click(TObject *Sender)
{
Label1->Caption = a + b;
        
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
a = 1000;
b = 2000;

}
//---------------------------------------------------------------------------

O recurso extern é um modo de trabalhar uma mesma variável em mais de um arquivo, guardando sempre o último valor atribuído à variável, não importando em qual arquivo se tenha dado tal atribuição.

Em C++ , extern não é mais tão necessário por causa do conceito de namespace, o qual é mais facilmente gerenciado em sistemas grandes. Futuramente abordaremos esse conceito.



anterior

índice

próxima


HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO