20

私はこの簡単なテストファイルを持っています:

#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

これらの2つのファイルは同じディレクトリにあります。しかし、それ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

誰かが私がここで間違ったことを教えてもらえますか?

ありがとう、

4

1 に答える 1

26
 gcc -o testit teststack.c stack.c

両方のCソースファイルをコンパイルし、オブジェクトファイルをリンクする必要があります。これにより、すべてが1つのコマンドで実行されます。

于 2012-10-03T05:06:28.893 に答える