Undefined reference to

baka no emily Messages postés 59 Statut Membre -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Bonjour,

J'essaye de compiler un programme de test mais j'obtiens ceci :

test_vecteurs_creux.c:32:1: error: unterminated argument list invoking macro "assert"
test_vecteurs_creux.c: In function `main':
test_vecteurs_creux.c:17: error: `assert' undeclared (first use in this function)
test_vecteurs_creux.c:17: error: (Each undeclared identifier is reported only once
test_vecteurs_creux.c:17: error: for each function it appears in.)
test_vecteurs_creux.c:17: error: expected `;' at end of input
test_vecteurs_creux.c:17: error: expected declaration or statement at end of input

Je me comprends pas pourquoi les asserts ne sont pas reconnus alors que j'ai fait l'inclusion, de même il ne reconnait pas les fonctions de VecteursCreux.h

Voici le programme :

#include "VecteursCreux.h"
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>


int main() {

VecteurCreux v;

init_vecteur_creux(&v);
assert(est_nul(&v);
set_element_vect(&v,1,1.2);
assert(get_element(&v,0) == 0.0);
assert(get_element(&v,1) == 1.2);
assert(get_element(&v,2) == 0.0);
set_element_vect(&v,2,2.2);
assert(get_element(&v,0) == 0.0);
assert(get_element(&v,1) == 1.2);
assert(get_element(&v,2) == 2.2);
set_element_vect(&v,1,0.0);
assert(get_element(&v,0) == 0.0);
assert(get_element(&v,1) == 0.0);
assert(get_element(&v,2) == 2.2);

}


merci d'avance pour vos réponses.

A voir également:

6 réponses

Jean-Marie
 
salut,

il te manque une parenthèse fermante ici :
assert(est_nul(&v);

il faut
assert(est_nul(&v));
0
baka no emily Messages postés 59 Statut Membre
 
Tout simplement ! Merci beaucoup

Ceci étant dit maintenant j'obtiens :

/tmp/cckambvf.o: In function 'main':
/home/kabia/Langage C/BE01-kabia/test_vecteurs_creux.c:16: undefined reference to 'init_vecteur_creux'
/home/kabia/Langage C/BE01-kabia/test_vecteurs_creux.c:17: undefined reference to 'est_nul'
/home/kabia/Langage C/BE01-kabia/test_vecteurs_creux.c:18: undefined reference to 'set_element_vect'
/home/kabia/Langage C/BE01-kabia/test_vecteurs_creux.c:19: undefined reference to 'get_element'
/home/kabia/Langage C/BE01-kabia/test_vecteurs_creux.c:20: undefined reference to 'get_element'
/home/kabia/Langage C/BE01-kabia/test_vecteurs_creux.c:21: undefined reference to 'get_element'
/home/kabia/Langage C/BE01-kabia/test_vecteurs_creux.c:22: undefined reference to 'set_element_vect'
/home/kabia/Langage C/BE01-kabia/test_vecteurs_creux.c:23: undefined reference to 'get_element'
/home/kabia/Langage C/BE01-kabia/test_vecteurs_creux.c:24: undefined reference to 'get_element'
/home/kabia/Langage C/BE01-kabia/test_vecteurs_creux.c:25: undefined reference to 'get_element'
/home/kabia/Langage C/BE01-kabia/test_vecteurs_creux.c:26: undefined reference to 'set_element_vect'
/home/kabia/Langage C/BE01-kabia/test_vecteurs_creux.c:27: undefined reference to 'get_element'
/home/kabia/Langage C/BE01-kabia/test_vecteurs_creux.c:28: undefined reference to 'get_element'
/home/kabia/Langage C/BE01-kabia/test_vecteurs_creux.c:29: undefined reference to 'get_element'
collect2: ld returned 1 exit status

en d'autres termes il ne reconnait pas mes fonctions pourtant j'ai bien inclus le .h
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
donne nous ta ligne (ou tes lignes) de compilation
0
Yoda
 
Bonjour,
Tu utilises le signe == qui est un opérateur de comparaison.
Mais on ne voit aucun test if qui exploite ces comparaisons. Curieux.
:)
0
baka no emily Messages postés 59 Statut Membre
 
Je n'ai pas bien compris. Il s'agit juste de vérifier que les fonctions font bien ce qu'on leur demande en fait.
0
Yoda
 
je ne suis pas spécialiste en C, je voulais juste attirer ton attention sur l'usage du signe ==
c'est cette ecriture qui m'a fait réagir
assert(get_element(&v,0) == 0.0);

par exemple dans cette ligne, moi je lis que la fonction assert reçoit comme argument VRAI si get_element(&v,0) == 0.0 et FAUX dans le cas contraire.

est-ce ce que je me trompe?
0
baka no emily Messages postés 59 Statut Membre
 
Oui oui c'est bien ça
0
baka no emily Messages postés 59 Statut Membre
 
Enfin le programme va s'arrêter si cela n'est pas vérifié en fait
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Bonjour,

Le message d'erreur est clair :
undefined reference to 'init_vecteur_creux' etc.
En gros, il ne connaît pas la fonction init_vecteur_creux lors de l'édition des liens.
La fonction est-elle bien définie dans un .c et compiler avant ?
Faudrait savoir comment tu compiles. Si tu compiles juste ce fichier, c'est normal que ça ne marche pas.
0
baka no emily Messages postés 59 Statut Membre
 
Oui je compilais que ce fichier oui. Pourquoi normal ?
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Beh, le fichier que tu compiles a besoin de certaines fonctions comme init_vecteur_creux. Tu as déclaré le prototype dans ton fichier .h, mais lors de l'édition des liens ton programme ne trouvera pas en mémoire le code correspondant à ta fonction.
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
D'où ma demande de ligne de compilation
0