data structures - Multiple declaration error in C using DOSBox version 0.74 -
i'm creating simple project on dosbox version 0.74, double linked list. created 3 files:
- a header file dlinkedlist.h contains structure of list node , functions prototypes.
 - dlinkedlist.c file. contains implementation of these functions.
 - main.c file
 
the header file included in both of other 2 files. , dlinkedlist.c included in main.c , don't dosbox says functions in dlinkedlist.c aren't defined in main() . errors solved when included .c file in main.c.
now problem error
error dlinkedlist.h  multiple declaration of listnode   this code in header file besides prototypes.
typedef struct listnode{     int id;     char name[size];     struct listnode *next;     struct listnode *prev; }listnode;  typedef struct list{ listnode *head; int size; }list;      
and dlinkedlist.c included in main.c.
you don't include c files in other c files.
the accepted practice create header file containing declarations (not definitions) , include that.
what's happening you're including header file twice, once in main.c , again in dlinkedlist.c included main.c.
so, example, if dlinkedlist.c file was:
int getfortytwo (void) { return 42; }   then equivalent dlinkedlist.h file have prototype:
int getfortytwo (void);   the scenario can think of may think need include c file if you're doing full compilation/linking of main.c on own, , that's not way it.
you compile main.c , other c file individual object files, link 2 together.
Comments
Post a Comment