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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么1.c不能調用2.c中國的enter呢?

為什么1.c不能調用2.c中國的enter呢?

C
蝴蝶不菲 2022-11-21 16:12:52
我在1.c文件中寫了#include<stdio.h>extern void enter(char str[ ]);main(){char str[30];enter(str);printf("%s",str);}在2.c中寫了void enter(char str[ ]){gets(str);} 
查看完整描述

3 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

1、外部函數extern時聲明這個函數為外部函數,本文件不做定義,只調用,編譯不會出錯,但不能運行(沒有函數實體)。如果想有運行結果就必須將函數實體包含進來,所以文件包含和extern是配合使用的。文件包含只需要包含.h就是實體的頭文件,但有些軟件貌似不能識別頭文件和c的關系,所以就只能包含.c文件。
2、也就是說外部函數extern只是個聲明,他告訴編譯器我用到了一個外部函數,但如果該文件沒有將函數實體包含進來,編譯器是找不到的,依然是不能運行的,所以extern只是個聲明,并沒有做任何事,只是這樣是沒用的。include是包含一個文件,就是類似于該文件復制到此處(只是說類似,其實是個查找路徑,讓編譯器去該路徑查找函數)。

查看完整回答
反對 回復 2022-11-24
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

1中是可以調用2的,但是在鏈接的時候要把2生成的.o文件加進去
生成可執行文件有幾步,你需要取了解一下編譯和鏈接的過程,不需要太深入,但是會對你很有幫助。最好不要用現成的IDE去做練習,現實的環境中很多都是使用MAKEFILE去組織編譯的,這也有助于更加全面的了解整個系統

查看完整回答
反對 回復 2022-11-24
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

還需要2.h 函數聲明void enter(char str[ ]);
1.c 中#include “2.h”

查看完整回答
反對 回復 2022-11-24
  • 3 回答
  • 0 關注
  • 133 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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