C编译器找不到函数定义
C compiler can't find function definition
我是 C 编程的新手,遇到这个问题:
三个文件:main.c
、foo.h
、foo.c
在同一目录下。
main.c
:
#include <stdio.h>
#include "foo.h"
int main(){
printf("%d",func(1));
}
foo.h
声明函数 func
:
int func(int);
foo.c
定义函数 func
:
#include "foo.h"
int func(int a){
return a+1;
}
此代码按预期工作,但是当我将定义文件 foo.c
重命名为其他名称时,比如 bar.c
,然后 main.c
在编译期间抛出错误:
LLVM ERROR: Program used external function _func
which could not be resolved!
我知道定义文件不需要和头文件同名。为什么我将 foo.c
重命名为 bar.c
后链接器找不到合适的定义?
更一般地说,链接器如何搜索函数定义?一个一个地搜索同一目录中的每个 .c
个文件?只在.c
文件中查找与头文件同名的definition?
编辑:
我在 MacBook 上使用 code-runner IDE,不知道 IDE 实际上是如何编译源文件的。
在编译命令中添加文件名:
$ gcc -o main main.c foo.c && ./main
^^^^^
我是 C 编程的新手,遇到这个问题:
三个文件:main.c
、foo.h
、foo.c
在同一目录下。
main.c
:
#include <stdio.h>
#include "foo.h"
int main(){
printf("%d",func(1));
}
foo.h
声明函数 func
:
int func(int);
foo.c
定义函数 func
:
#include "foo.h"
int func(int a){
return a+1;
}
此代码按预期工作,但是当我将定义文件 foo.c
重命名为其他名称时,比如 bar.c
,然后 main.c
在编译期间抛出错误:
LLVM ERROR: Program used external function
_func
which could not be resolved!
我知道定义文件不需要和头文件同名。为什么我将 foo.c
重命名为 bar.c
后链接器找不到合适的定义?
更一般地说,链接器如何搜索函数定义?一个一个地搜索同一目录中的每个 .c
个文件?只在.c
文件中查找与头文件同名的definition?
编辑: 我在 MacBook 上使用 code-runner IDE,不知道 IDE 实际上是如何编译源文件的。
在编译命令中添加文件名:
$ gcc -o main main.c foo.c && ./main
^^^^^