'struct <anonyme>" n'a pas de membre nommé

La recherche de la façon de référence du noeud et le régler à la valeur null pour la création de la fonction. Toutes les suggestions de cette sortie donnée de mettre de l'avant et à l'arrière des nœuds dans la file d'attente à NULL?

gcc -std=c99 -ggdb -Wall -Wextra  -c queueADT.c
queueADT.c:13:1: warning: useless storage class specifier in empty declaration [enabled by default]
 };
 ^
queueADT.c: In function 'que_create':
queueADT.c:36:6: error: 'struct <anonymous>' has no member named 'front'
   new->front = NULL;
      ^
queueADT.c:37:6: error: 'struct <anonymous>' has no member named 'rear'
   new->rear = NULL;
      ^
queueADT.c:38:8: error: expected identifier before '*' token
   new->*cmprFunc = NULL;

Ici est la partie principale du code qui a causé l'erreur. (2 structures )

typedef struct node {
    void* data;
    //size_t num;
    struct node *next;
};


struct QueueADT {
    struct node front;                     /* pointer to front of queue */
    struct node rear;                      /* pointer to rear of queue  */
    int *contents[ QUEUE_SIZE ];      /* number of items in queue  */
    int *cmprFunc;                    /* The compare function used for insert */
};


#include "queueADT.h"


///create a queue that is either sorted by cmp or FIFO
//function with two void
QueueADT que_create( int (*cmp)(const void*a,const void*b) ) {

    QueueADT new;
    new = (QueueADT)malloc(sizeof(struct QueueADT));

    if (cmp == NULL) {
        //do I create a new pointer to the cmp_int64?
        new->front = NULL;
        new->rear = NULL;
        new->*cmprFunc = NULL;

    } else {
        new->*cmprFunc = &cmp;
        new->front = NULL;
        new->rear = NULL;
    }

    return ( new );
}
typedef struct node {...}; <-- où est l'alias? Pourquoi le typedef? Vous êtes également le casting du retour de malloc est une drôle de façon: (QueueADT)malloc(); <-- malloc retourne un pointeur, mais il n'y a pas typedef de cette QueueADT d'être vu. Enfin: new n'est pas un grand var nom: vous ne serez pas en mesure de compiler ce code s'il fait partie d'un projet C++
Je crois que vous vouliez dire int *cmprFunc(struct node*, struct node *)
Mon .h fichier a QueueADT écrit comme 'typedef struct { } *QueueADT;'
pas de la const void* est un type abstrait de données
Le fichier d'en-tête typedef'un anonyme struct comme *QueueADT, mais le fichier C définit un struct QueueADT avec les membres front et rear, les deux sont différents des structures entièrement

OriginalL'auteur arrowinfedex | 2014-10-30