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?