0
當我包含頭文件時出現錯誤,但如果包含源文件則不會。包含頭文件時未定義的引用
的功能是這樣的源文件中定義:
/* in User.c */
struct User {
const char* name;
};
struct User* addedUser(const char* name) {
struct User* user = malloc(sizeof(struct User));
user->name = name;
return user;
}
而且像這樣使用:
/* in main.c */
int test_addedUser() {
char* newName = "Fooface";
struct User* newUser = addedUser(newName);
assert(!strcmp(newName, newUser->name));
return 0;
}
這個偉大的工程。當我#include「User.c」時,我可以調用test_addUser而不會出現問題。
不過,我想#包括「User.h」來代替,這是位於同一目錄:
/* in User.h */
struct User {
const char* name;
};
struct User* addedUser(const char*);
但是,如果我#包括「User.h」,而不是user.c的,我得到一個錯誤:
CMakeFiles/run_tests.dir/src/tests.c.o: In function `test_addedUser':
/home/rid/port/src/tests.c:(.text+0x4eb): undefined reference to `addedUser'
似乎很奇怪,我認爲包括源文件user.c的時候參考的作品很好,但它是無法調和User.h.
任何想法,爲什麼這可能是?
你說得對,我的代碼很完善,但是我沒有正確配置鏈接器。謝謝! – ridthyself