Ayuda con unas pequeñas correcciones de C a C++

Iniciado por elmasnew, 7 Noviembre 2015, 00:40 AM

0 Miembros y 1 Visitante están viendo este tema.

elmasnew

Hola amigos, a ver si me podeis ayudar con este problemilla..

Estoy utilizando un codigo de C en visual studio 2010 y funciona bien casi todo, excepto unas pocas lineas que dan algunos errores que procedo a describir:

Primer error:

MiValor = malloc(MiValor_LEN);                                 ---->>> IntelliSense: no se puede asignar un valor de tipo "void *" a una entidad de tipo "unsigned char *"

Segundo error:

if ((MiValor = calloc(1, sizeof(struct global)))) {          ---->>> IntelliSense: no se puede asignar un valor de tipo "void *" a una entidad de tipo "global *"

Tercer error:

if (get_int(optarg, &MiValor->verbosity) != 0 || MiValor2 = 1 || 3 = MiValor3) {                              ---->>> IntelliSense: la expresión debe ser un valor L modificable

Cuarto error:

if (MiValor[0] = 0x80 && MiValor[4] = 0x80 && MiValor[8] = 0x80  && MiValor[12] = 0x80) {          ---->>> IntelliSense: la expresión debe ser un valor L modificable


Seguro que para alguien que sepa de C++ es facil solucionarlo, pero yo no conozco muy bien los metodos de este lenguaje..

Saludos..

ivancea96

Incluso en C, ese código es incorrecto.
Los primeros 2, como dice el compilador, es porque tratas de guardar un valor void* (que es lo que retorna malloc y calloc), en punteros de otro tipo. Tienes que hacer una conversión explícita:
MiValor = (unsigned char*)malloc(MiValor_LEN)

El tercero y cuarto dicen: la expresión debe ser un valor L modificable. valor L, con L de Left. Los operadores binarios tienen 2 elementos: el izquierdo L, y el derecho R. L = R;. El izquierdo L, en caso de asignaciones, no puede ser una constante. En el código tienes: 3 = MiValor3. "3" es uan constante numérica, no le puedes asignar otro valor.

Olvidando esos errores: En esos if, no estás haciendo comparaciones si es lo que pretendías hacer. Estás haciendo asignaciones. No confundas la asignación "var = 5", con la comparación "var == 5".