sinopsis - La inicialización descarta los calificadores del tipo de destino del puntero
el puntero sinopsis (2)
Intento imprimir la lista de una lista individualmente vinculada a la que me referí en el texto del enlace . Funciona, pero obtengo las advertencias del compilador:
Initialization discards qualifiers from pointer target type
(en la declaración de inicio = cabeza) y
return discards qualifiers from pointer target type
(en declaración de devolución) en este código:
/* Prints singly linked list and returns head pointer */
LIST *PrintList(const LIST *head)
{
LIST *start = head;
for (; start != NULL; start = start->next)
printf("%15s %d ea/n", head->str, head->count);
return head;
}
Estoy usando XCode. ¿Alguna idea?
En la siguiente función, recibiría la advertencia con la que te encontraste.
void test(const char *str) {
char *s = str;
}
Hay 3 opciones:
Elimina el modificador const de param:
void test(char *str) { char *s = str; }
Declara la variable objetivo también como const:
void test(const char *str) { const char *s = str; }
Use un tipo de conversión:
void test(const char *str) { char *s = (char *)str; }
Es esta parte:
LIST *start = head;
El parámetro para la función es un puntero a una constante, const LIST *head
; esto significa que no puede cambiar a lo que apunta. Sin embargo, el puntero anterior es a no const; podrías desreferenciarlo y cambiarlo.
Necesita ser const
también:
const LIST *start = head;
Lo mismo aplica a su tipo de devolución.
Todo lo que el compilador dice es: "Oye, le dijiste a la persona que llama que no cambiaría nada", pero estás abriendo oportunidades para eso ".