Oi Lucas,
Você olhou aqui o que comentei sobre os ******* no arquivo stack.c?
Na copia do seu EP3 que você me mostrou na quarta-feira eu havia colocado essas estrelas para te alertar sobre um ponto da implementação. Elas deveriam ser removidas.
1. Sim, é a que o Gabriel mencionou.
Ok
3. A mensagem aparece nessa linha: s->topo = h; dereferencing pointer to incomplete type Esse erro aparece em qualquer outra linha da minha eval.c onde eu tento fazer alguma coisa com s->topo.
Tem algo que eu não estou entendo.
Se você está usando a implementação que o Gabriel mencionou, então o seu programa não deveria ter s->topo... na função eval(). A sua eval() só deveria utilizar a pilha através da interface dada por stack.h:
Stack s = stackInit...;
stackPush(s,bla);
stackPop(s);
stackTop(s);
Bem, de qualquer maneira, isto não explica o erro de compilação.
Nesse caso acima, h é uma CelUtil que eu aloquei na minha função eval para funcionar como a cabeça da lista, fiz isso para ver se o problema era quando eu alocava a célula dentro da interface, mas pelo visto é outra coisa.
Bem, se h é do tipo CelUtil então você deveria fazer
CelUtil h;
p->topo = &h; /* p->topo eh um ponteiro para um CelUtil */
/* portanto deve receber um endereço de um CelUtil */
Mas isto também não explica o erro de compilação com dereferencing...