salut,


comment dans un module supposé générique peut-on retrouver la taille d'un objet utilisateur ?

par exemple des fonctions comme qsort nécessitent la taille des éléments a trier, ou encore fread() etc...

par exemple disons que j'ai du coté utilisateur un tableau de double, dans mon module générique les double seront pointés par des void*, seulement comment faire pour savoir que ce sont des double ?

pour exemple ce programme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(void)
{
   double a = 4;
 
   void *p;
   p = &a;
 
   printf("sizeof(double) = %d\n",sizeof(double));
   printf("sizeof(a) = %d\n",sizeof(a));
   printf("sizeof(*p) = %d\n",sizeof(*p));
 
 
   return 0;
}

qui sans surprise m'affiche :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
sizeof(double) = 8
sizeof(a) = 8
sizeof(*p) = 1

et comme coté module je n'ai que '*p' sous la main, impossible de savoir que mes éléments font '8' en taille, ce qui est la source de nombreux disfonctionnements...