O uso de variáveis globais em linguagem C não é recomendado, pois facilita a ocorrência de alguns problemas e dificulta a localização de erros no código fonte. Como as variáveis são públicas durante toda a execução do programa, elas podem ser alteradas a qualquer momento no mesmo sem termos qualquer controle sobre isto.
O que vou apresentar neste post é uma alternativa simples ao uso de variáveis globais. Esta alternativa consiste em declarar como variáveis locais em um arquivo C, as variáveis que seriam globais. Veja o código a seguir:
/* * data_access.c */ static int data1 = 0; static int data2 = 0; int getData1(){ return data1; } void setData1(int d1){ data1 = d1; } int getData2(){ return data2; } void setData2(int d2){ data2 = d2; }
Através do static limitamos o acesso às variáveis apenas para as funções do arquivo no qual as variáveis foram declaradas. Depois criamos funções para acessá-las (get e set) e deixamos o protótipo dessas funções em um arquivo header (.h). Veja na sequência o arquivo header:
/* * data_access.h */ #ifndef DATA_ACCESS_H_ #define DATA_ACCESS_H_ int getData1(); void setData1(int d1); int getData2(); void setData2(int d2); #endif /* DATA_ACCESS_H_ */
E então, incluímos este .h em todos os nossos módulos que vão acessar as variáveis. Este acesso às variáveis é feito através das funções get e set que criamos e não diretamente, pois as variáveis não são visíveis fora do módulo C que criamos. Veja um exemplo de código acessando as variáveis:
#include <stdio.h> #include "data_access.h" int main (void){ printf("data 1: %d\n", getData1()); setData2(5); printf("data 2: %d\n", getData2()); return 0; }
Fazendo o acesso através de funções temos muito mais segurança no nosso código, pois podemos controlar os momentos em que estas variáveis são acessadas e limitar para que as funções de acesso somente sejam visíveis nos módulos que efetivamente precisem. Usando variáveis globais qualquer parte do programa pode acessar e alterar as variáveis sem termos nenhum controle sobre isso.
Deixe uma resposta