J'essaie d'imprimer la liste d'une liste liée individuellement à laquelle j'ai fait référence dans texte du lien . Cela fonctionne, mais j'obtiens les avertissements du compilateur:
Initialization discards qualifiers from pointer target type
(sur déclaration de départ = tête) et
return discards qualifiers from pointer target type
(sur déclaration de retour) dans ce code:
/* 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;
}
J'utilise XCode. Des pensées?
C'est cette partie:
LIST *start = head;
Le paramètre de la fonction est un pointeur sur une constante, const LIST *head
; cela signifie que vous ne pouvez pas changer ce qu'il pointe. Cependant, le pointeur ci-dessus est non-const; vous pouvez le déréférencer et le changer.
Il doit également être const
:
const LIST *start = head;
La même chose s'applique à votre type de retour.
Tout ce que le compilateur dit est: "Hé, vous avez dit à l'appelant" Je ne changerai rien ", mais vous ouvrez des opportunités pour cela."
Dans la fonction suivante, obtiendrait l'avertissement que vous avez rencontré avec.
void test(const char *str) {
char *s = str;
}
Il y a 3 choix:
Supprimez le modificateur const de param:
void test(char *str) {
char *s = str;
}
Déclarez également la variable cible comme const:
void test(const char *str) {
const char *s = str;
}
Utilisez une conversion de type:
void test(const char *str) {
char *s = (char *)str;
}