bonjour
je suis en train de faire un analyseur lexical avec le langage C . lorsque je compile il m'affiche "undefined reference to 'anal_lex' .
pouvez vous m'aider . merci d'anvance
projetcompilateur.rar
bonjour
je suis en train de faire un analyseur lexical avec le langage C . lorsque je compile il m'affiche "undefined reference to 'anal_lex' .
pouvez vous m'aider . merci d'anvance
projetcompilateur.rar
Salut
Je suis désolé de te le dire mais ton truc c'est une catastrophe. Voici en vrac tout ce qui ne va pas
- tu lis ton fichier via un while feof(). Ce n'est pas la bonne méthode. feof ne sert pas à détecter la fin de fichier mais à indiquer, une fois que ta fonction de lecture ne lit plus rien, si le manque de lecture est dû à une fin de fichier ou autre chose (style une erreur). Accessoirement je ne vois nulle part de lecture du fichier
- tu fais un free(tab_identif) alors que ce pointeur n'a pas été alloué (bon heureusement il est à NULL donc c'est pas grave. Inutile, mais pas grave.
- ta fonction UnilexId renvoie la chaine "id". Or une chaine n'étant qu'un pointeur, tu renvoies juste l'adresse de la position de la chaine "id". Or les variables internes aux fonctions étant détruites en fin de fonction, tu renvoies donc l'adresse d'une chaine qui n'existe plus.
- dans Anal_lex tu alloues 1024 octets via malloc que tu ranges dans chaine puis ta fonction se termine et on ne sait pas ce qu'est devenu cette variable "chaine". En tout cas le pointeur est perdu mais les 1024 octets restent méchamment alloués à l'intérieur.
- tu mets du code dans un ".h". Ca ça ne se fait pas. Les ".h" étant destinés à être distribués, alors que le code pouvant être gardé confidentiel, ça donne une incompatibilité entre les 2 options. Les .h sont faits pour déclarer les éléments utiles (les macros, les signatures de fonctions). Le code, lui, étant transmis sous forme objet compilé ".o" voire regroupés en librairies ".a"
Maintenant, concernant ton problème précis, il faudrait que tu dises comment tu compiles ce truc. Je pense que si tu compiles de cette façon
Ca devrait compiler. Mais avant que cela fonctionne...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 gcc -c implementation.c gcc main.c implementation.o -o implementation
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Le rar combien un fichier cbp, un projet CodeBlocks donc. Je n'ai pas réussi à linker le bazar mais je ne sais pas pourquoi. J'ai enlevé le fichier h et le fichier c (pas le main l'autre), je les ai remis et la des erreurs et des warnings de compilation à gogogo. Je n'ai pas d'explication sur pourquoi ça compilait sans linker au début.
Partager