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:
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:
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:
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?