Undefined reference to

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.

6 réponses

  1. salut,

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

    il faut
    assert(est_nul(&v));
    0
    1. 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
      1. Contributeur
        donne nous ta ligne (ou tes lignes) de compilation
        0
    2. 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
      1. 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
        1. 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
        2. Oui oui c'est bien ça
          0
        3. Enfin le programme va s'arrêter si cela n'est pas vérifié en fait
          0
      2. Contributeur
        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
        1. Oui je compilais que ce fichier oui. Pourquoi normal ?
          0
          1. Contributeur
            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
          2. Contributeur
            D'où ma demande de ligne de compilation
            0