Ir ao conteúdo
  • Cadastre-se

Dúvida básica sobre C.


claudio.g.chepa

Posts recomendados

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.

Link para o comentário
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.

Link para o comentário
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(){}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...