erreur: spécificateurs de déclaration attendus ou ‘…’ avant ‘list_node’

J’ai un fichier catalog.h avec ce

typedef struct node* list_node; struct node { operationdesc op_ptr; list_node next; }; 

et un parser.h avec cette

 #include "catalog.h" int parse_query(char *input, list_node operation_list); 

Les deux en-têtes ont #ifndef , #define , #endif . Le compilateur me donne l’erreur suivante: expected declaration specifiers or '...' before 'list_node' sur la ligne parse_query. Quel est le problème? J’ai essayé de mettre le typedef dans parser.h, et ça va. Pourquoi est-ce que je reçois cette erreur lorsque le typedef est dans catalog.h?

L’erreur est la suivante (d’après votre commentaire):

J’ai eu un #include “parser.h” dans le catalogue.h. Je l’ai enlevé, et maintenant il comstack normalement …

En supposant que #include "parser.h" était avant le typedef dans catalog.h et que vous avez un fichier source qui inclut catalog.h avant parser.h , alors au moment où le compilateur inclut parser.h , le typedef n’est pas encore disponible. Il est probablement préférable de réorganiser le contenu des fichiers d’en-tête de manière à ne pas créer de dépendance circulaire.

Si ce n’est pas une option, vous pouvez vous assurer que tous les fichiers source parser.h ces deux fichiers incluent d’abord parser.h (ou uniquement).

Essayez ceci pour catalog.h :

 typedef struct node_struct { operationdesc op_ptr; struct node_struct* next; } node; typedef node* list_node;