Includes em C [RESOLVIDO]

1. Includes em C [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 10/10/2010 - 17:02h

Ola pessoal!

Estou com duvida a respeito de visibilidade de variáveis em C.

Por exemplo:
Digamos que tenho o arquivo abc.h que define as seguintes estruturas:
#define VAL 15;

int v1[ 10 ];
int v2[ 20 ];

E tenho um arquivo abc.c que tem o seguinte corpo:
#include "abc.h"

... metodos

A questao eh: toda vez que tento acessar uma variável de abc.h dentro de abc.c, o compilador acusa que a variavel nao foi declarada. Nem o define ele reconhece. Como podem ver, não esqueci de dar o include no .h, mas mesmo assim ele não aceita.

Outra coisa: resolvido o problema acima, haveria alguma forma de restringir a visibilidade das variaveis apenas para o .h e .c em questão? Digo, para alterar o valor dessas variaveis na main, por exemplo, eu soh poderia fazer utilizando os métodos, não diretamente, algo como o encapsulamento do C++.

Obrigado pela atencão de todos!


  


2. MELHOR RESPOSTA

Ezequias Rocha
Ezequias Rocha

(usa Ubuntu)

Enviado em 13/10/2010 - 13:20h

Bem, em C, pode-se realizar este tipo de ação da seguinte maneira:

Declare as variáveis como sendo globais em abc.c:
int v1[ 10 ];
int v2[ 20 ];
Em abc.h, declare-as como sendo "extern":
extern int v1[ 10 ];
extern int v2[ 20 ]

Todas vez que for utilizar estas variáveis que não em abc.c, ponha #include <abc.h>
Caso, em alguma função quiser restringir a visibilidade destas variáveis, crie variáveis locais com o mesmo nome dentro de tais funções, e assim, quaisquer variáveis invocadas com os nomes v1 ou v2 serão as variáveis locais declaradas dentro da função e não a variável global declarada em abc.c.

Embraces!


3. Re: Includes em C [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 13/10/2010 - 12:38h

Obrigado pela resposta!

Usei "extern" e as variáveis se tornaram visíveis no .c.

Quanto ao "encapsulamento", não é ago crítico. De qualquer forma, muito obrigado pelas dicas!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts