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.
|
HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO |