Jump to content

Recommended Posts

Posted

Boas,

Quero fazer um malloc a um array bidimensional, mas o problema é que sei que o código está correcto, ou parcialmente correcto, mas só funciona se estiver na função main, caso eu faça numa outra função não compila.

Erro de compilação:

display.c:56: error: two or more data types in declaration specifiers

display.c:56: error: function definition declared ‘typedef’

display.c: In function ‘mapUP’:

display.c:59: error: incompatible types in return

display.c:62: error: incompatible types in return

display.c:64: error: incompatible types in return

display.c:65: warning: control reaches end of non-void function

xx@Lxxx:~/Documents/UM/LI2/Rascunho$

Código:

typedef char AREA;

AREA **mapp;

int mapUP(void){
int i;
mapp = (AREA **) malloc(maxX * sizeof (AREA *));
for (i=0;i<maxX;i++){
	mapp[i] = (AREA *) malloc(maxY * sizeof(AREA));
}
return 0;
}

PS: Também reparei que o malloc faz a "segunda" coordenada infinita.... Não percebo pk... Se eu fizer um ciclo para imprimir, se passar a primeira coordenada ele dá segmentation fault como era de esperar, mas o da segunda é até acabar a memória.

Posted

Descobri o raio do problema por acaso....

Esquecime de meter ; depois de uma das structs... :| ... por acaso tive que ir modificar umas coisas e pronto... :|| ...

Agora alguém me explica porque é que ele cria é mapp[correcto][iNFINITOOOOOOOO] ???

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.