[c] question de newbie sur les typedefs

question de newbie sur les typedefs [c] - C - Programmation

Marsh Posté le 07-09-2003 à 18:28:19    

Bonjour,
 
       Voilà mon problème, lorsque j'essaie de compiler mon prog j'obtiens l'erreur suivante:
parser.h:12:conflicting types for 'PARSER'
parser.h:12: previous declarations of PARSER

 
Et voilà comment je procède: je déclare dans un fichier parser.h un type :

Code :
  1. typedef struct {
  2. char type[10];
  3. char daemon[10];
  4. char server[10];
  5. char luser[10];
  6. char ruser[10];
  7. char fail[40];
  8. char day[10];
  9. char time[10];
  10. char sentence[2048];
  11. } PARSER;


auquel je fais appel dans deux autres fichiers d'en-tetes :

Code :
  1. //pattern.h
  2. #include "parser.h"
  3. PARSER *extract_pattern(char *line, REGEXTAB *regextab);
  4. ...


et

Code :
  1. //dbutil.h
  2. #include "parser.h"
  3. int insert_data(PARSER *parser);
  4. ...


 
Mon main ressemble à ca :
 

Code :
  1. //main.c
  2. #include <stdio.h>
  3. #include "parser.h"
  4. #include "pattern.h"
  5. #include "dbutil.h"
  6. int main(void)
  7. {
  8. ...
  9. }


 
et pour finir le makefile:

Code :
  1. parser:  main.o pattern.o dbutil.o
  2. gcc -I'/usr/include/mysql' -L'/usr/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib -lpcre main.o pattern.o dbutil.o -o parser
  3. main.o: main.c pattern.h dbutil.h syslogparser.h parser.h
  4. gcc -c main.c
  5. pattern.o: pattern.c pattern.h parser.h
  6. gcc -c pattern.c
  7. dbutil.o: dbutil.c dbutil.h parser.h
  8. gcc -I'/usr/include/mysql' -c dbutil.c


 
Je sais que l'erreur vient de moi mais je trouve pas. Si quelqu'un pouvait m'indiquer mon erreur plzzzzz. La seule chose que je veux en fait c'est déclarer une structure comme un type et la réutiliser dans d'autres fichiers d'en-tete lors de la déclaration de fonctions.
 
Merci d'avance,
 
Kardiac


Message édité par kardiac le 07-09-2003 à 18:29:30
Reply

Marsh Posté le 07-09-2003 à 18:28:19   

Reply

Marsh Posté le 07-09-2003 à 18:31:24    

T'as oublié de mettre
 

Code :
  1. #ifndef parser_h
  2. #define parser_h
  3. ton .h
  4. #endif


 
dans parser.h

Reply

Marsh Posté le 07-09-2003 à 18:41:28    

Ok merci  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed