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 sur pointeur 64bits


Sujet :

C

  1. #1
    Membre habitué Avatar de Gui13
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 133
    Points
    133
    Par défaut Warning sur pointeur 64bits
    Bonjour à tous,

    J'ai un warning à la compilation de mon programme sous Linux alors que je ne l'ai pas sous Windows.
    Je pense que c'est dû au fait que mon gcc sous linux compile en 64 bits alors que sous Windows en 32 bits.

    Voici le problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    src/memory_manager.c: In function ‘mm_print_func’:
    src/memory_manager.c:67: warning: cast from pointer to integer of different size
    Je vous montre le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    memory_allocation *alloc = (memory_allocation *)data;
    	if(alloc)
    	{
    		printf("@ 0x%08x:\t%s:%d\t:\t%d bytes\n",
    			   (unsigned int)alloc->pt, // l'erreur se trouve ici
    			   alloc->file,
    			   alloc->line,
    			   alloc->size);
            }
    La structure "memory_allocation":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct _memory_allocation{
    	char *file;
    	unsigned int  line;
     
    	void *pt;
    	unsigned int size;
    };
    Un pointeur (void *) en 64 bits fait bien 64 bits, c'est ca?

    Si je retire le cast vers (unsigned int), le compilo me dit qu'il attend un cast vers (unsigned int)!

    Comment je peux faire pour bien imprimer mes pointeurs, et par la même fixer ce warning?

  2. #2
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par Gui13 Voir le message
    Si je retire le cast vers (unsigned int), le compilo me dit qu'il attend un cast vers (unsigned int)!
    Ou car %08x attend un unsigned int.

    Citation Envoyé par Gui13 Voir le message
    Comment je peux faire pour bien imprimer mes pointeurs, et par la même fixer ce warning?
    Pour imprime correctement un pointeur, il faut:
    • Ne pas le caster dans un type entier (c'est un pointeur, pas un entier) mais le caster en (void*).
    • Utiliser %p dans la chaîne de format

Discussions similaires

  1. warning sur conversion de pointeurs
    Par beatrix2004 dans le forum Débuter
    Réponses: 14
    Dernier message: 25/01/2010, 12h01
  2. [Dates] Warning sur filemtime()
    Par xave dans le forum Langage
    Réponses: 28
    Dernier message: 03/01/2006, 14h16
  3. probleme de debug d'une dll sur pc 64bits
    Par giova_fr dans le forum MFC
    Réponses: 2
    Dernier message: 12/12/2005, 16h40
  4. pointeur sur pointeur
    Par gaut dans le forum C
    Réponses: 3
    Dernier message: 01/11/2005, 21h30
  5. Réponses: 5
    Dernier message: 05/06/2004, 13h12

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