Muy buenas,
tengo un problemilla con los void*.
Resulta que si yo hago:
char* pp;
pp = ( char* ) malloc (sizeof(char) + 55);
(char*) pp += 5;
esto no da ningún error...
pero si hago
void* pp;
pp = ( char* ) malloc (sizeof(char) + 55);
(char*) pp += 5;
Me da el siguiente error: error C2106: '+=' : left operand must be l-value
A que puede ser debido? Como lo puedo solucionar?
Gracias!
te está haciendo primero la suma y después el cast, por eso te da error.
¿Para que quieres hacer esto? Iguálalo a un char y ya está. La programación donde se "ahorraban" variables ha pasado a la historia ya hace tiempo. Ahora se estila, y se necesita por su complejidad, la claridad.
Como bien dice Hadd esta haciendo cast despues de hacer la suma. El compilador se queja que estas intentado cambiar la direccion del puntero a una variable que no tiene tipo y asi es imposible averiguar que tiene que sumar si cinco bytes, cinco words o lo que sea.
ya, la putada es que estoy adaptando un programa muy antinguo que tenemos en la empresa...
al final he echo esto, que no sé si es correcto....
UCHAR* pp = (UCHAR*)el_item;
pp += sizeof( UCHAR );
(void*)el_item = (void*)pp;
Gracias!
Tambien puedes hacer la suma sin abreviaturas:
void* pp;
pp = ( char* ) malloc (sizeof(char) + 55);
pp = (char*)pp +5;
un saludo
Cita de: "vincent"ya, la putada es que estoy adaptando un programa muy antinguo que tenemos en la empresa...
al final he echo esto, que no sé si es correcto....
UCHAR* pp = (UCHAR*)el_item;
pp += sizeof( UCHAR );
(void*)el_item = (void*)pp;
Gracias!
Creo que te estas liando si UCHAR es un byte el codigo va bien pero como sean dos bytes (o mas) sumara el doble de lo que toca.
Aqui la cuestion es... ¿que es pp? Un array de bytes? ¿un array de caracters en ASCII? El puntero a void* va bien cuando es un array a algo desconocido y se suele usar en funciones genericas. Por ejemplo malloc ratorna un puntero void* porque no sabe lo que quieres si un array de bytes o lo que sea.
Una pregunta... ¿es un programa para una empresa (entiendo que hecho por profesionales) y como nombre de varoables le pones pp? :blink: A no ser que sea ironia y se refiera a que sea una variable con ideologia de la ultraderecha.
como dice haddd explayate con el codigo, no intentes ahorrar dos lineas, ademas ponerse a depurar eso es una locura ;)
saludos
pd: samsaga2 no lo digo por liar las cosas pero mejor dejemos la politica de lado ya que hay gente que se puede ofender al ver que juntas "ultraderecha" con "pp", como otros se ofenderian viendo "eta" y "psoe", vale mas olvidar este ultimo comentario de samsaga2 para no empezar los flames que fijo que lo puso sin querer
CitarUna pregunta... ¿es un programa para una empresa (entiendo que hecho por profesionales) y como nombre de varoables le pones pp? A no ser que sea ironia y se refiera a que sea una variable con ideologia de la ultraderecha.
Deberías ver mucho código profesional... o el del Quake :)
Wenas.
Solo queria aclarar que aunque no te da un fallo sintactico tienes un fallo en el codigo que pusiste...no es lo mismo
(sizeof(char) + 55);
que
(sizeof(char) * 55);
El compilador no se queja pq no es fallo sintactico, pero ten cuidado q luego te puede dar problemas de que no puede escribir en una memoria q no tiene reservada.
SALUDOS ^^