web-dev-qa-db-fra.com

référence non définie à <nom de la fonction>

J'ai ce simple fichier de test:

#include "stack.h"

int main()
{
  Stack* stck = init_stack();

  return 0;
}

et stack.h est défini comme suit:

#ifndef STACK_H
#define STACK_H

#define EMPTY_STACK -1
typedef struct stack
{
  char ch;
  struct stack* prev;
} Stack;

extern Stack* init_stack();

extern char pop(Stack*);

extern void Push(Stack*, char);

#endif

Ces deux fichiers se trouvent dans le même répertoire. Mais quand je fais gcc .. pour le construire, je reçois toujours l'erreur ci-dessous:

$ ls
stack.c  stack.h  teststack.c
$ gcc -o testit teststack.c 
/tmp/ccdUD3B7.o: In function `main':
teststack.c:(.text+0xe): undefined reference to `init_stack'
collect2: ld returned 1 exit status

Quelqu'un pourrait-il me dire ce que j'ai fait de mal ici?

Merci,

17
user1508893
 gcc -o testit teststack.c stack.c

Vous devez compiler les deux fichiers source C et lier les fichiers objets; cela fait tout en une seule commande.

23
Jonathan Leffler