ヘッダファイルをインクルードするとエラーになりますが、ソースファイルをインクルードするとエラーになります。ヘッダファイルを含むときの未定義参照
機能は、このようなソースファイルで定義されています
/* 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;
}
これは素晴らしい作品。私は "User.c"を#includeしても問題なくtest_addUserを呼び出すことができます。
しかし、私は同じディレクトリに配置され、代わりに "User.hを" #includeしたい:私は代わりにUser.cの "User.hを" #includeする場合、
/* in User.h */
struct User {
const char* name;
};
struct User* addedUser(const char*);
しかし、 、私はエラーを取得する:
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