Retourner aux forums || Retourner au forum Programmation.c

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

Posté par Edouard Geuten (Jabber id, page perso, ) le 01 octobre 2005
0
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.

> Lire le message (5 commentaires, moyenne: 2,2).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

source de test.c ?

Posté par Jean Bréfort (page perso, ) le 01/10/2005 à 14:20. (lien). É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 JaguarWan () le 01/10/2005 à 17:32. (lien). É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.

  • [^]Re: warnings

    Posté par Edouard Geuten (Jabber id, page perso, ) le 02/10/2005 à 01:02. (lien). Évalué à 2.

    De fait ca marche maintenant.

    Par contre ca foire a nouveaux sur des fonctions qui utilisent getopt.
    Y'a une liste des use flags qu'il est bon d'utiliser ?

    • [^]Re: warnings

      Posté par Krunch (Jabber id, page perso, ) le 02/10/2005 à 12:49. (lien). Évalué à 2.

      inet_aton(3) n'est pas très standard, si tu veux un truc un peu plus portable mieux vaut utiliser inet_addr(3) qui est dans SUSv2 (et sans doute POSIX). La liste des macros à définire pour dire à GCC quels standards on veut utiliser est dans /usr/include/features.h.

      http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf(...) (la final draft d'ISO C99)
      http://www.opengroup.org/bookstore/catalog/un.htm(...) (Single UNIX Specification)

      (c'est pour le cours de Piater ?)

      --
      Free Softwares Users Group Arlon (Sud Luxembourg, Belgique)
      pertinent, e adj. Approprié ; qui se rapporte exactement à ce dont il est question.
      • [^]Re: warnings

        Posté par Edouard Geuten (Jabber id, page perso, ) le 02/10/2005 à 18:02. (lien). Évalué à 2.

        hihi

        non c'est pas pour le cours de piater, mais ce cours m'a fait me rendre compte que le c99 c bien pratique parfois (et plus propre, et et et ...)

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.c