problema con casting de parametro void*
Hola amigos, tengo una funcion la cual espera como parametro un LPVOID y tengo un void* pero el problema es que el void* apunta a una direccion y yo quiero enviarle esa direccion + 4.
Código PHP:
El problema es el segundo parametro de esa funcion la cual espera un buffer. Si por ejemplo hago esto: Código PHP:
¿como se haría eso? solo se me ocurre usar una variable auxiliar la cual incrementaria 4 y le pasaria esa. |
El problema creo que es porque el compilador no sabe el tamaño del dato. Es decir, si tu itenes un char*, el compilador sabe que el tamaño de dato es 1 octeto ( sizeof (char)). Si tienes int* entonces el tamaño será 2 octetos o 4 octetos (dependiendo de la configuración y del SO), es decir "sizeof (int)". Con void* no lo sabe porque los datos "void" tienen un tamaño de 0 octetos.
Así, "pPathSave + 4" se traduce por Código:
(void*) (((long int)pPathSave) + (4 * sizeof (void))) Código:
(void*) (((long int)pPathSave) + (4 * 0)) La única solución que se me ocurre es no usar void*, sino un puntero al tipo de dato apropiado (deduzco que en tu caso sería int*). Por cierto, "&pPathSave" devuelve la dirección donde se almacena el puntero, no el valor del puntero. |
Código PHP:
|
La franja horaria es GMT +2. Ahora son las 16:44:23. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi