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 ↓
int?max(int?a,int?b) {????if(a>b){ ?????????return?a; ?????}else{ ?????????return?b;???? ?????} }沒有包含頭文件,也就是沒有聲明函數,但之前進行 了??compile and?assemble. 生成 max.o 文件
于是
警告提示:warning: implicit declaration of function ‘max’
但成功生成 文件 out
以上是沒有 定義 函數。
如果導入 頭文件 (定義了 max 函數),或著直接在 main 中定義max函數,再和 *.o 文件 鏈接編譯,
就不會出現 警告和錯誤。