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

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

為什么不去掉#include "test.c"會報錯

#include <stdio.h>

extern void printLine()? ? ?//這里定義的方法對嗎?

{

printf("**************\n");

}

int main()

{

say();

return 0;

}

https://img1.sycdn.imooc.com//5d3982a000017c5a14880776.jpg

https://img1.sycdn.imooc.com//5d39837e000156c607120576.jpg

正在回答

3 回答

不怪,只不過是環境惹得禍。vs的集成開發環境是多線程(面向對象學習后你就曉得了)編譯的,適合大型項目開發。你可以理解編譯test.c文件和其他文件是同時進行的。當編譯test.c文件時并未找到printLine()的聲明或定義(因為這時候main.c文件還沒有編譯完成),只能假設printLine()的返回值是int類型(為啥假設int類型,,,等你有機會了問比爾·蓋茨吧。),而在編譯main.c文件時找到了printLine()的定義,但是printLine()的定義卻是void,導致再次定義失敗。

解決方法:在test.c文件中,say()前添加聲明? void printLine(); 擋掉vs集成開發環境的自作主張。

也不錯,你可以理解c函數分兩級內部(static)、外部(extern 默認)。函數被static標記后就被固定在test.c文件中了,就不能再默認跨文件調用了。想要調用就要引入文件,也就是#include "test.c"。

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

你安裝的是哪個版本???為什么會有中文,而且底色是黑色的?


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

滿慕星辰 提問者

我用的是VS2013,安裝的中文版的,改成黑色模板就是黑色的
2019-08-08 回復 有任何疑惑可以回復我~

https://img1.sycdn.imooc.com//5d3984c200012af705470134.jpg

去掉之后出現say未定義。。。


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

小小疾飛

我也感到好奇怪,左下角沒去掉的。看其他大神怎么回答吧。
2019-07-26 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么不去掉#include "test.c"會報錯

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

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

幫助反饋 APP下載

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

公眾號

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