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:
Je vous montre le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3src/memory_manager.c: In function mm_print_func: src/memory_manager.c:67: warning: cast from pointer to integer of different size
La structure "memory_allocation":
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); }
Un pointeur (void *) en 64 bits fait bien 64 bits, c'est ca?
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; };
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?
Partager