Ir ao conteúdo

Declaração? Tipos Abstratos de Dados


Quik19

Posts recomendados

Postado

Qual o problema na declaração do código?

O compilador acusa erro logo na minha função mais simples, e não entendo o porque.

Alguém pode me explicar o que ocorre, o que devo alterar, e o Por Que?

Arquivo .h:

#include "RedeSocial.c"

typedef struct preco Preco;

typedef struct bloco no;

typedef struct lista Lista;

void CriaLista(Lista *L);

Arquivo .c:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

struct bloco{

char nome[30];

struct bloco *proxprod;

struct preco *proxpreco;

};

struct lista{

struct bloco *iniprod, *fimprod;

};

void CriaLista(Lista *L){

L->iniprod=NULL;

L->fimprod=NULL;

}

Arquivo main.c:

#include <stdio.h>

#include <stdlib.h>

#include "RedeSocial.h"

int main(int argc, char *argv[]){

Lista *L;

CriaLista(L);

//Isso é somente uma parte do programa. Uma das que dá erro e não entendo o porque

}

Segue o erro log de erros apontado pelo compilador (Dev-C++):

"n file included from RedeSocial.h:1,

from main.c:3:

RedeSocial.c:32: error: syntax error before '*' token

RedeSocial.c: In function `CriaLista':

RedeSocial.c:33: error: `L' undeclared (first use in this function)

RedeSocial.c:33: error: (Each undeclared identifier is reported only once

RedeSocial.c:33: error: for each function it appears in.)

In file included from main.c:3:

RedeSocial.h: At top level:

RedeSocial.h:9: error: prototype for 'CriaLista' declares more arguments than previous old-style definition

RedeSocial.c:32: error: previous definition of 'CriaLista' was here"

Ele não reconhece o argumento do tipo Lista que passo para a função, mas já declarei ela anteriormente...

Postado

Olá colega,

* tente retirar o #include "Redesocial.c" do cabeçalho;

* inclua no Redesocial.c : #include "Redesocial.h";

* inclua no Redesocial.h:


#ifndef REDESOCIAL_H
#define REDESOCIAL_H
...
...
#endif

Veja se resolve ou, pelo menos diminui os erros. Grande abraço.

Postado
Olá colega,

* tente retirar o #include "Redesocial.c" do cabeçalho;

* inclua no Redesocial.c : #include "Redesocial.h";

* inclua no Redesocial.h:


#ifndef REDESOCIAL_H
#define REDESOCIAL_H
...
...
#endif

Veja se resolve ou, pelo menos diminui os erros. Grande abraço.

Nao era questão de colocar:

#ifndef REDESOCIAL_H

#define REDESOCIAL_H

...

...

#endif

Mas sim, de colocar #include .h no arquivo .c, e eu estava fazendo o contrário. Ainda assim tenho erros nas funções principais do meu programa mas esse que tinha perguntado foi solucionado, e para eu explicar o que está havendo no meu main.c ficaria muito confuso por escrito (apesar do entendimento geral ser um tanto simples).

Muito obrigado pela ajuda!

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...