Ir ao conteúdo
  • Cadastre-se

Criar Biblioteca em C


Visitante
Ir à solução Resolvido por vangodp,

Posts recomendados

Fala Galera! Tudo bem? 

 

Alguém pode ajudar e ver onde estou errando?

 

Segue o código e o arquivo.h que criei(chamado nova.h), só que na hora de rodar dá o erro "redefinition of 'fatorial' nessa linha 15 " int fatorial(int x) ".

 

Alguém sabe o que está errado? Os dois arquivos estão na mesma pasta.

 

Segue o código e em seguida a biblioteca, aliás a função da biblioteca.

#include <stdio.h>#include <conio.h>#include "nova.h"//int fatorial(int x);int main(){    int x=0;    printf("\nEntre com um numero: ");    scanf("%d",&x);    printf("\nResultado: %d",fatorial(x));    getch();}int fatorial(int x){    int resultado=1,i;    for(i=1; i<=x; i++);{                            resultado = resultado*i;                          }              return resultado;              }
int fatorial(int x){    int resultado=1,i;    for(i=1; i<=x; i++);{                            resultado = resultado*i;                          }              return resultado;              }
Link para o comentário
Compartilhar em outros sites

  • Solução

normalmente as funções vão em arquivos.c ou Cpp, porém não há uma regra definida para isso.

 

O que te esta acontecendo é que o programa esta falando que você definiu 2 vezes essa função fatorial, uma embaixo de main e outra no arquivo nova.h.

 

O problema eu acho que você não esta entendendo como funciona um arquivo .h, ele simplesmente é um "copiar e pegar" do texto que se encontra nele, justamente onde você fez o include. Ou seja o programa copia tudo o que esta em nova.h e o pega justamente na linha do #include "nova.h", ai da problema, porque você já tem a função fatorial embaixo do main. Total... redefinição de fatorial.

 

Si você vai mudar a função fatorial para um arquivo.h, tire essa função do arquivo main, e não precisa nem por o prototipo, por que é como si ela estivesse antes de main, o pré processador vai copiar ela lá no inicio como eu falei.

 

No seu caso o correto é:

main.c

#include <stdio.h>#include "nova.h"int main() {    int x = 0;    printf ( "\nEntre com um numero: " );    scanf ( "%d%*c", &x );    printf ( "\nResultado: %d", fatorial ( x ) );        getchar ();    return 0;}

nova.h

int fatorial ( int x ) {    int resultado = 1, i;        for ( i = 1; i <= x; i++ ); {            resultado = resultado * i;            }    return resultado;}

Outra coisa... não use conio nunca mais por favor. kkk

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...