如何调用其他文件中存在的函数?

时间:2018-07-14 20:50:44

标签: c

给出2个文件,例如:

file1.c:

int main(){
  f();
  return 0;
}

file2.c:

void f(){
  return;
}

为什么我不能像这样从f呼叫file1.c

2 个答案:

答案 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;
}