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