IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

attention : assignment makes pointer from integer without a cast


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut attention : assignment makes pointer from integer without a cast
    Bonjour,
    je suis assez débutant en C bien que je sache un peu programmer en fortran, basic et autres shell's. (ou batch du MS-DOS)
    Donc les problèmes principaux que j'ai ont trait à ce qui est spécifique au C, à savoir les pointeurs !
    Donc je me retrouve à la compil' par gcc avec l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    attention : assignment makes pointer from integer without a cast
    et la ligne incriminée est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hp = gethostbyname(serv);
    Il va sans dire que hp est bien déclaré comme un pointeur vers une structure hostent, ce qui est ce que retourne la fonction gethostbyname().
    Par contre le man de gethostbyname, me dit qu'il faudrait inclure le header netdb.h qui ne l'est pas dans l'original du programme que je tente de modifier;
    Quand je l'ajoute, il se produit de nouvelles erreurs à l'édition de liens, à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    undefined reference to `__res_mkquery'
    undefined reference to `__res_send'
    undefined reference to `__dn_skipname'
    undefined reference to `__dn_expand'
    undefined reference to `_getshort'
    undefined reference to `_getshort'
    undefined reference to `__dn_expand'
    Pourtant, ces symboles ne sont utilisés nulle part dans le code que je modifie.
    Comment définir ces symboles manquants ? Faut il un autre header et lequel ? (mais le seul header dans lequel apparaissent ces symboles est resolv.h, qui est déjà inclus),
    ou comment éviter mon problème originel de cast entre un entier et un pointeur ?
    Merci,
    David

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 391
    Par défaut
    Le warning initial est bien dû à l'absence de déclaration de gethostbyname(). Un compilo bien configuré t'aurait en plus donné un warning "implicit declaration of gethostbyname".

    Pour le reste, je ne sais pas trop, c'est la première fois que je vois ces noms. Quelle est ta plate-forme, exactement? (Matériel + OS + version du compilo etc.)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut Ok pour la déclaration de gethostbyname().
    Ok pour l'absence de déclaration de gethostbyname(), mais il me semblait que le header servait en partie à celà.
    Mon compilo est un gcc qui dit tout ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    david@test:~$ gcc -v
    Utilisation des specs internes.
    Target: i486-linux-gnu
    Configuré avec: ../src/configure -v --with-pkgversion='Ubuntu 4.3.3-5ubuntu4'
     --with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs
     --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared
     --with-system-zlib --libexecdir=/usr/lib --without-included-gettext
     --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3
     --program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug
     --enable-objc-gc --enable-mpfr --enable-targets=all --with-tune=generic
     --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu
     --target=i486-linux-gnu
    Modèle de thread: posix
    gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4)
    Un compilo bien configuré t'aurait en plus donné un warning "implicit declaration of gethostbyname".
    Et je ne pense pas qu'il y ait de Pb de configuration d'icelui puisque je suis passé directement d'ubuntu 8.04 en 9.04, sans aucune bidouille de ma part. (sur un PC à 2.67 GHz)
    David
    P.S. la deuxième série d'erreurs se présente quand le "#include <netdb.h>" est présent;
    et les différentes références non définies appartiennent toutes à resolv.h .
    P.S.2 : et quand je commente le "#include <resolv.h>" il se produit exactement la même chose (cette même série d'erreurs "undefined ...") que quand il était là.

  4. #4
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    ajoute
    à l'édition de lien.

    PS: gethostbyname() ne devrait plus être utiliser (cf. getaddrinfo)

    Cordialement.

Discussions similaires

  1. Réponses: 9
    Dernier message: 01/01/2012, 23h02
  2. assignment makes pointer from integer without a cast
    Par morpheusmg dans le forum Débuter
    Réponses: 4
    Dernier message: 27/11/2011, 17h31
  3. Réponses: 5
    Dernier message: 17/02/2011, 20h19
  4. Réponses: 2
    Dernier message: 12/11/2010, 12h11
  5. Réponses: 6
    Dernier message: 11/05/2006, 22h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo