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 :

Warning : pointer targets in passing argument 1 of 'strcpy' differ in signedness


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Par défaut Warning : pointer targets in passing argument 1 of 'strcpy' differ in signedness
    Bonjour,
    Ce warning apparait en RHEL 6.3 (64 bits) mais n'était pas signalé en RHEL 5.6 (32 bits).
    C'est sur le strcpy que se pose le problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    struct { unsigned short len; unsigned char arr[30]; } AIRSP;
    char NEW_AIRSP[21];
    strcpy(AIRSP.arr,NEW_AIRSP);
    Si je caste NEW_AIRSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy(AIRSP.arr,(unsigned char)NEW_AIRSP);
    J'ai 2 Warnings :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    arinc_main.c:7308: warning: cast from pointer to integer of different size
    arinc_main.c:7308: warning: pointer targets in passing argument 1 of 'strcpy' differ in signedness
    Merci de votre aide

  2. #2
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Par défaut
    En fait il faut s'adapter au prototype de strcpy() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy((char *)AIRSP.arr,(const char *) NEW_AIRSP);

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy(AIRSP.arr,(unsigned char)NEW_AIRSP);
    Soit tu t'es trompé dans ton code soit tu t'es trompé en postant, mais il manque une étoile, d'où le premier warning.
    La 2e erreur vient du fait que les char sont signés par défaut (la plupart du temps voire tout le temps) et que tu donnes un tableau de char explicitement non signés.

    Le transtypage n'est a priori utile que pour le premier paramètre. Le code suivant compile sans erreur sous Mac OS X Lion (64 bits) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdlib.h>
    #include <string.h>
     
    int main(void)
    {
     
    	struct { unsigned short len; unsigned char arr[30]; } AIRSP;
    	char NEW_AIRSP[21];
    	strcpy((char*) AIRSP.arr, NEW_AIRSP);
     
    	return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ gcc -Wall -Wextra isa94.c 
    $

  4. #4
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Par défaut
    oui, j'ai oublié l'*.
    C'est pénible ces versions de compilateur qui sont plus ou moins permissive. Ces erreurs n'apparaissait pas dans les versions HP-UX 11.11, RHEL 4.5, RHEL 5.6.
    j'ai réussi à les contourner finalement après quelques recherches.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Warning: Call-time pass-by-reference has been deprecated
    Par Poseidon62 dans le forum Langage
    Réponses: 8
    Dernier message: 16/10/2011, 16h03
  2. Réponses: 4
    Dernier message: 22/09/2010, 14h42
  3. discards qualifiers from pointer target type
    Par loïc31baground dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 04/06/2009, 11h48
  4. Réponses: 15
    Dernier message: 21/01/2009, 15h21
  5. Warning lors du this passé dans un constructeur
    Par NicolasJolet dans le forum C++
    Réponses: 9
    Dernier message: 10/08/2006, 09h43

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