给出2个文件,例如:
file1.c:
int main(){
f();
return 0;
}
file2.c:
void f(){
return;
}
为什么我不能像这样从f
呼叫file1.c
?
答案 0 :(得分:3)
因为首先您需要告诉编译器(声明)它存在于某处:
// My query from my controller
// First I text $search on the user collection
const users = await User.find({
$text: {
$search: req.query.search, $caseSensitive: false,
},
});
// Then I populate an array to get only the ids of users found
const usersIds = [];
if (users) {
await users.forEach((user) => {
usersId.push(user._id);
});
}
// Then my find query
const projects = await Project.find({
$or: [{
$text: {
$search: req.query.search,
$caseSensitive: false
},
author: { $in: usersIds }
}]
})
不过,通常最好将这样的声明放在单独的头文件(例如void f(); //function declaration
int main()
{
f();
return 0;
}
)中,以便以后可以包含此文件(例如file2.h
),而不是在每个文件中都复制这样的声明。需要此功能的其他文件。
答案 1 :(得分:0)
问题在于file1.c不“知道”函数f存在。您需要使用原型。标准方法是将原型放在头文件中,将定义放在.c文件中。
它看起来像这样:
file1.c:
#include "file2.h"
int main(){
f();
return 0;
}
file2.h:
#ifndef FILE2_H
#define FILE2_H
void f();
#endif
file2.c:
#include "file2.h"
void f(){
return;
}