Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
claudio.g.chepa

Dúvida básica sobre C.

Recommended Posts

Boa tarde pessoal. Tenho uma dúvida básica sobre C e gostaria de saber se podem me ajudar a entender.

Não consigo entender porque o código abaixo funciona corretamente. Estes dois arquivos estão na mesma pasta, mas notem que não há nenhum arquivo "lista.h", nem um #include"lista.h" no arquivo "main.c".

Achei que era necessário criar um .h e incluir ele no arquivo main ou em outros arquivos que fossem usar aquela biblioteca.

//arquivo lista.c
#include<stdio.h>

void mostra(int i)
{
printf("O numero é: %d.\n",i);
}

//arquivo main.c
int main()
{
mostra(6);

return 0;
}

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Não precisa não, usei o gcc para compilar no linux e rodou normal, digitei:


gcc -o main main.c lista.c

Pois é, cara, também uso linux e compilei com o gcc, é que isso está me confundindo a cabeça. Agora não sei mais até que ponto não é preciso mais incluir as bibliotecas que crio, tipo lista.h. É que me preocupo com essas coisas de boas práticas de programação e confesso que isso me deixou confuso, ainda mais por ser meio novo em progrmamação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É importante ter um header, é uma boa prática de programação

por exemplo ao chamar uma função não declarada acima da linha atual(por que o compilador lê linha por lina, ele é muito burro)


//arquivo.c

void funcao1()
{
...
funcao2(); //erro função não foi declarada
}

void funcao2()
{
...
funcao3(); //erro função não foi declarada
}

void funcao3(){}

Você viu que por ser linear o compilador não sabe que existe uma função com o mesmo nome implementada no resto do código, sua salvação em um header, arquivo de cabeçalhos de funções, ou seja você declara um esboço da função que implementará futuramente e o compilador entenderá que função chamar;

Ao acrescentar


//arquivo.h

void funcao1();

void funcao2();

void funcao3();

Você fará o compilador pensar assim:


//arquivo.c

void funcao1()
{
...
funcao2(); //essa função foi declarada no header arquivo.h esperar ser implementada
}

void funcao2()
{
...
funcao3(); //essa função foi declarada no header arquivo.h esperar ser implementada
}

void funcao3(){}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×