Z88DK (curso Radastan) - Dudas Varias
Moderador: na_th_an
Re: Z88DK (curso Radastan) - Dudas Varias
¿ has probado a hacerle el cast con (int) (_sprite1) ?
- Hark0
- Mensajes: 96
- Registrado: Mar, 28 Ene 2014, 07:42
- Ubicación: Cornellà de Llobregat - Barcelona
- Contactar:
Re: Z88DK (curso Radastan) - Dudas Varias
$this->bbcode_second_pass_quote('na_th_an', 'T')e avisa por si acaso te has equivocado. Como no te has equivocado, puedes evitarlo. De todos modos, te sale porque estás asignando punteros a un array de enteros. En esta plataforma no importa, porque los punteros son valores de 16 bits, y los enteros también, por lo que los tipos son compatibles y el programa no te casca... Sin embargo en otras no tienen por qué ser compatibles (por ejemplo, en MSDOS, si estás en modo large el puntero puede ser de 32 bits y los enteros tienen 16...). Por eso no es buena práctica de programación en C, y un buen compilador te avisa.
Lo suyo es, por tanto, hacer las cosas bien para que el compilador no se queje.
Cada extern unsigned char [] es en realidad un puntero a unsigned char. Si, teniendo en cuenta esto, haces tu array como un array de punteros a unsigned char, y problema solucionado:
$this->bbcode_second_pass_code('', 'unsigned char *matriz_direccion_sprites [] = {
sprite1, sprite2, sprite3
}')
Así, cuando llamas a la función, que espera un unsigned char *, con "matriz_direccion_sprites [1]", por ejemplo, estarás pasándole precísamente un unsigned char *, ya que la matriz contiene elementos de este tipo.
En ese mismo sentido iba el consejo que te di. La función que usas espera un puntero, o sea, una dirección de memoria. Teniendo la dirección de memoria del primer elemento (sprite0 en tu ejemplo de antes) calcular la de los siguientes es cuestión de sumar y multiplicar.
Lo suyo es, por tanto, hacer las cosas bien para que el compilador no se queje.
Cada extern unsigned char [] es en realidad un puntero a unsigned char. Si, teniendo en cuenta esto, haces tu array como un array de punteros a unsigned char, y problema solucionado:
$this->bbcode_second_pass_code('', 'unsigned char *matriz_direccion_sprites [] = {
sprite1, sprite2, sprite3
}')
Así, cuando llamas a la función, que espera un unsigned char *, con "matriz_direccion_sprites [1]", por ejemplo, estarás pasándole precísamente un unsigned char *, ya que la matriz contiene elementos de este tipo.
En ese mismo sentido iba el consejo que te di. La función que usas espera un puntero, o sea, una dirección de memoria. Teniendo la dirección de memoria del primer elemento (sprite0 en tu ejemplo de antes) calcular la de los siguientes es cuestión de sumar y multiplicar.
Aja!... entiendo... muchas gracias por la aclaración.
litiopixel.blogspot.com - Desarrollo videojuegos Indie · Pixel-Art · Retroinformática · Electrónica