gcc 不能直接鏈接呀!
max.h :
int?max(int?a,int?b);
main.c:
#include?<stdio.h> //#include"max.h" int?main() {???int?a?=?21;???? ????int?b?=12;???? ????int?num?=?max(a,b);???? ????printf("max?value?=?%d\n",num); }
已經生產了 max.o 并編譯
gcc?max.o?main.c?-o?main
warning:? ?implicit declaration of function ‘max’
不能直接干呀。
但是提示完后,成功編譯出 “main” 程序。
2020-03-26
已經解決:
當主體文件 沒有聲明時(即沒有包含的頭文件)就會報錯;對其的一些**猜測**:
?#include?<stdio.h>
//#include"max.h"
int
?main()
{???
int
?a?=?21;????
????
int
?b?=12;????
????
int
?num?=?max(a,b);????
????
printf
(
"max?value?=?%d\n"
,num);
}
max.h ↓
max.c ↓
沒有包含頭文件,也就是沒有聲明函數,但之前進行 了??compile and?assemble. 生成 max.o 文件
于是
警告提示:warning: implicit declaration of function ‘max’
但成功生成 文件 out
以上是沒有 定義 函數。
如果導入 頭文件 (定義了 max 函數),或著直接在 main 中定義max函數,再和 *.o 文件 鏈接編譯,
就不會出現 警告和錯誤。