我有以下文件:體系結構x86_64的未定義符號。如何正確包含?
bst.h:其中只包含聲明
typedef struct Node Node;
struct Node {
unsigned int key;
Node *left;
Node *right;
};
int insert(Node *node);
Node* lookup(unsigned int key);
int delete(Node *node);
bst.c:它定義了聲明
#include "bst.h"
#include <stdio.h>
Node *root = NULL;
int insert(Node* node) {
... implementation ...
return 0;
}
Node* lookup(unsigned int key) {
... implementation ...
return current;
}
int delete(Node *node) {
... implementation ...
return 0;
}
test_bst。 c:測試BST實施
#include "bst.h"
#include <stdio.h>
int main() {
Node node = {10,NULL,NULL};
insert(&node);
return 0;
}
如果我運行gcc test_bst.c
我得到以下錯誤:
Undefined symbols for architecture x86_64:
"_insert", referenced from:
_main in cc1m0mA1.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
什麼我錯在這裏做什麼?它是否與我包含文件的方式有關?或者用我的彙編指令?我看到很多與我的標題相同的問題 - 但是,它們都不能幫助我解決我的錯誤。
你需要編譯這兩個C文件。 – teppic
將'extern'添加到頭文件中的函數簽名中。 –