[英]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
聲明 function func
:
int func(int);
foo.c
定義 function func
:
#include "foo.h"
int func(int a){
return a+1;
}
此代碼按預期工作,但是當我將定義文件foo.c
重命名為其他內容時,例如bar.c
,然后main.c
在編譯期間拋出錯誤:
LLVM 錯誤:程序使用了無法解析的外部 function
_func
!
我知道定義文件不需要與 header 文件同名。 為什么我將 foo.c 重命名為foo.c
后bar.c
找不到合適的定義?
更一般地說,linker 如何搜索 function 定義? 逐個搜索同一目錄下的每個.c
文件? 只在.c
文件中搜索定義,與header文件同名?
編輯:我在 MacBook 上使用代碼運行程序 IDE,不知道 IDE 是如何實際編譯源文件的。
在編譯命令中添加文件名:
$ gcc -o main main.c foo.c && ./main
^^^^^
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.