亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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” 程序。


正在回答

1 回答

已經解決:
當主體文件 沒有聲明時(即沒有包含的頭文件)就會報錯;對其的一些**猜測**:

?#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 ↓

int?max(int?a,int?b);

max.c ↓

int?max(int?a,int?b)
{????if(a>b){
?????????return?a;
?????}else{
?????????return?b;????
?????}
}

沒有包含頭文件,也就是沒有聲明函數,但之前進行 了??compile and?assemble. 生成 max.o 文件

gcc?max.c?-c?-o?max.o

于是

gcc?max.o?max.c?-o?outfile
gcc?main.c?max.o?-o?out

警告提示:warning: implicit declaration of function ‘max’
但成功生成 文件 out
以上是沒有 定義 函數。

如果導入 頭文件 (定義了 max 函數),或著直接在 main 中定義max函數,再和 *.o 文件 鏈接編譯,

gcc?main.c?max.o?-o?out

就不會出現 警告和錯誤。


0 回復 有任何疑惑可以回復我~
#1

Vseelove 提問者

也就是說在 *.c(待編譯文件)里的函數 在 *.o 里就可以了,只不過沒有**聲明** 就會警告。
2020-03-26 回復 有任何疑惑可以回復我~
#2

Vseelove 提問者

有個詞錯了,頭文件 是聲明,不是定義。
2020-03-26 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Linux C語言編程基本原理與實踐
  • 參與學習       204358    人
  • 解答問題       469    個

本視頻教程介紹C語言基本工作原理以及適用與C的實際開發方式

進入課程

gcc 不能直接鏈接呀!

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號