Forum Programmation.c Problémes de C99 avec les struct des includes

Posté par  (site web personnel) .
Étiquettes : aucune
0
1
oct.
2005
Bonjour,

j'ai un petit problèmes avec un code source et je ne trouve nulle part d'explications, peut-être quelqu'un ici en saura plus que moi.


Voici deux compilations d'un même fichier source :

$ gcc -Wall -W -Wmissing-prototypes -pedantic test.c -o test

$ gcc -Wall -W -Wmissing-prototypes -pedantic --std=c99 test.c -o test
test.c: Dans la fonction « change_addr »:
test.c:15: error: storage size of `ifr' isn't known
test.c:27: attention : implicit declaration of function `inet_aton'

Comme vous pouvez le voire, si on spécifie l'ISO C99 des erreurs se produisent. Elle concerne la fonction inet_aton et une structure ifreq définie dans <net/if.h>.

Je ne comprend pas pourquoi.
  • # source de test.c ?

    Posté par  (site web personnel) . Évalué à 2.

    Effectivement, ça paraît curieux.
    Il serait plus facile de t'aider si tu publiais le contenu de test.c
  • # warnings

    Posté par  . Évalué à 3.

    Tes CFLAGS sont trop restrictifs.

    Généralement, le warning "storage size of XXX isn't known" apparaît quand on manipule un (void *) ou un type incomplet.

    Or la définition de la structure ifreq est entre #ifdef __USE_MISC dans le header, donc elle n'est pas déclarée. Idem pour inet_aton(), qui est une fonction BSD.

    Essayes donc d'ajouter -D_BSD_SOURCE à tes CFLAGS.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.