第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

我知道有兩種解決辦法(不知道是否真的正確),但是有一個問題不解。

兩種方法解決,第一種,將hello.c中的#include "test.c";這一行刪去,在函數printLine之前加上extern(事實上可省略)使其成為外部函數,使其能被test.c調用從而在test.c中完成函數say,函數say默認為外部函數,能被(刪去#include "test.c"的)hello.c調用,從而完成。
第二種,在hello.c中只將函數printLine改為外部函數使其能在test.c中被調用,而在test.c中,將函數say改為test.c的內部函數,即在其之前加上static。由于hello.c中已經包含include"test.c"所以能直接調用該函數。

不知道我的這兩個思路是否正確,但是對于第二種方法,有一個問題是,(若第一種方法思路正確,成立)既然函數say默認為外部函數,那么即使不包含test.c的文件(如把#include "test.c"刪去的hello.c)都能直接調用函數say(第一種方法采用),為什么包含了test.c文件的默認的hello.c文件卻不能直接調用,需要先把函數say改為test.c文件的內部函數才能調用呢?

正在回答

2 回答

明白了,多謝!

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

我來解釋一下,為什么你的第二種方法一定要改為static內部函數,如果不加,你看到報錯內容了嗎,https://img1.sycdn.imooc.com//5b3c4bfd0001debe03830139.jpg

因為多次定義了say()這個函數,為什么會多次定義呢?因為hello.c中已經引用了test.c這個文件,相當于把整個代碼拿進去了,而hello.c和test.c在同一文件夾下,test.c的say又是外部函數,導致say()這個函數相當于外部函數同名了知道嗎?那怎么解決呢,一改為靜態(tài)函數,這樣就可以同名了;二去掉引用test.c文件,這樣就不存在多次定義了。

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

寒山遠火

請問 外部函數同名了 是什么意思?
2018-08-07 回復 有任何疑惑可以回復我~
#2

qq_tor_1

我想問一下,#include"test.c"起的作用就是從test.c中調取文件的嗎?是不是也因為如此,say函數由于是外部函數所以無法這樣調用以致報錯?
2018-09-01 回復 有任何疑惑可以回復我~
#3

qq_tor_1

還有上一位朋友說的第二個方法中,將say函數改為內部函數還是會報錯,為什么/?
2018-09-01 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C語言入門
  • 參與學習       926892    人
  • 解答問題       21419    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

我知道有兩種解決辦法(不知道是否真的正確),但是有一個問題不解。

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

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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