未定义的引用(undefined reference to )

2019-08-01 02:59发布

我有这个简单的测试文件:

#include "stack.h"

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

  return 0;
}

stack.h定义如下:

#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

这两个文件在同一目录。 但是,当我做gcc ..建造它,我不断收到以下错误:

$ 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

谁能告诉我,我做错了什么吗?

谢谢,

Answer 1:

 gcc -o testit teststack.c stack.c

你需要编译两个C源文件和链接对象的文件; 这确实是在同一个命令。



文章来源: undefined reference to