Bonjour à tous,
Dans le cadre de la migration d'un programme PROC (C avec du SQL) d'un compilateur à un autre, je me retrouve avec un souci sur la fonction QSORT.
Le but de cette fonction est de trier un tableau de structures.
L'erreur de compilation se trouve sur la ligne suivante (voir fonction FsortBuffer plus bas) :
line 688.19: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union
Code : Sélectionner tout - Visualiser dans une fenêtre à part return strcmp (pa->wHOSTSTRING, pb->wHOSTSTRING);
Il semblerait que le void const ne gére que des structures incomplétes (?!!).
C'est pourtant comme cela qu'il faut faire d'après le site http://emmanuel-delahaye.developpez.com/qsort.htm (?!!).
Appel à la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part qsort (wBufferAR, sizeof wBufferAR / sizeof *wBufferAR, sizeof *wBufferAR, FsortBuffer);
fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 static int FsortBuffer (void const *in1, void const *in2) { /* definir des pointeurs type's et initialise's avec les parametres */ struct BUFFER_AR const *pa = in1; struct BUFFER_AR const *pb = in2; /* evaluer et retourner l'etat de l'evaluation (tri croissant) */ return strcmp (pa->wHOSTSTRING, pb->wHOSTSTRING); }
définition de la structure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 typedef struct { char wCMPCODE_DEST[12+1]; char wCMPCODE[12+1]; char wDOCCODE[12+1]; char wDOCNUM[12+1]; char wDOCSTAT[1+1]; char wHOSTSTRING[7]; } BUFFER_AR;
Quelqu'un sait comment résoudre ce souci ?
Au pire, une solution de contournement ?
Je vous remercie d'avance!
Partager