Bonjour tout le monde,
Je viens solliciter votre aide puisque je me trouve confronté à un problème qui me bloque depuis quelques jours maintenant.
J'utilise les utilitaires Flex 2.5.31 et Bison 2.1 dans un projet écrit principalement en C++ pour générer un analyseur lexical et un analyseur syntaxique.
Je ne rencontre pas de problème particulier à la compilation de ce fichiers avec g++.
Or j'ai besoin de compiler mon projet avec d'autres compilateurs que sont icc ou mpicxx.
icc me sort des warning du style :
..mais la compilation s'effectue tout de mêm.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 omission of exception specification is incompatible with previous function "malloc" (declared at line 589 of "/usr/include/stdlib.h") void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ omission of exception specification is incompatible with previous function "free" (declared at line 603 of "/usr/include/stdlib.h") void free (void *); /* INFRINGES ON USER NAME SPACE */ omission of exception specification is incompatible with previous function "isatty" (declared at line 743 of "/usr/include/unistd.h") extern int isatty YY_PROTO(( int ));
Alors que mpicxx me sort les erreurs :
Je vois bien qu'il s'agit d'un problème de déclaration multiple et j'aimerais bien savoir comment rectifier ce souci sachant que les fonctions free et malloc sont redéfinies par lex et yacc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 "malloc(unsigned long)" has a conflicting declaration. "/usr/include/stdlib.h", line 589.14: 1540-0424 (I) "malloc" is declared on line 589 of "/usr/include/stdlib.h". "free(void *)" has a conflicting declaration. "/usr/include/stdlib.h", line 603.13: 1540-0424 (I) "free" is declared on line 603 of "/usr/include/stdlib.h".
Si vous avez déjà rencontré ce souci, je veux bien un coup de pouce.
Merci d'avance.
Partager