
EduardoLM
(usa Debian)
Enviado em 05/06/2016 - 10:24h
Bom dia, estou com um problema em juntar vários arquivos para executar um programa em C, simplesmente o compilador não reconhece outros arquivos a não ser a main.c, ja pesquisei muito na internet, mas ainda não obtive exito, sei que tenho que indicar ao compilador todos os arquivos que fazem parte do programa, estou fazendo assim:
gcc main.c file2.c file3.h -o teste
então, o compilador não reconhece o tipo abstrato criado por mim, o pior que eu não sei se é erro de lógico ou do compilador, por isso estou vindo aqui pedir ajuda, então se alguém pudesse me ajudar, ficaria agradecido. Programa que estou tentando executar:
//O programa apenas lê uma coordenada e imprime invertida
-----------------------------------------
MAIN. C
#include <stdio.h>
#include <stdlib.h>
#include "ponto.h"
int main() {
TPonto *p = (TPonto*)malloc(sizeof(TPonto));
printf("Informe uma coordenada do plano\n");
scanf("%f %f", &p->x, &p->y);
inverte(p);
return (0);
}
PONTO.C
#include <stdlib.h>
#include <stdio.h>
#include "ponto.h"
struct ponto
{
float x, y;
};
void inverte (TPonto *pp)
{
printf("Coordenadas invertidas\n%f\n%f\n", pp->y, pp->x);
}
PONTO.H
#ifndef PONTO_H
#define PONTO_H
#include <stdlib.h>
typedef struct ponto TPonto;
void inverte (TPonto *pp);
#endif
--------------------------------------------------------------
ERRO:
main.c: In function ‘main’:
main.c:8:40: error: invalid application of ‘sizeof’ to incomplete type ‘TPonto’
TPonto *p = (TPonto*)malloc(sizeof(TPonto));
^
main.c:12:22: error: dereferencing pointer to incomplete type
scanf("%f %f", &p->x, &p->y);
^
main.c:12:29: error: dereferencing pointer to incomplete type
scanf("%f %f", &p->x, &p->y);
^
main.c:14:5: warning: passing argument 1 of ‘inverte’ from incompatible pointer type [enabled by default]
inverte(&p);
^
In file included from main.c:3:0:
ponto.h:8:6: note: expected ‘struct TPonto *’ but argument is of type ‘struct TPonto **’
void inverte (TPonto *pp);