簡體   English   中英

C 編譯器找不到 function 定義

[英]C compiler can't find function definition

我是 C 編程新手,遇到這個問題:

三個文件: main.cfoo.hfoo.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.cbar.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM