課程
/后端開發(fā)
/C
/C語(yǔ)言入門
為什么這里printLine函數(shù)前邊不能省略extern
2016-06-26
源自:C語(yǔ)言入門 5-13
正在回答
因?yàn)槲募ello.c的printLine()函數(shù)和test.c中的say()函數(shù)是被相互引用的,因此這兩個(gè)函數(shù)都應(yīng)為外部函數(shù),在兩個(gè)文件中都必須聲明引用。所以小編的答案是錯(cuò)誤的!具體代碼如下:
補(bǔ)充:extern的主要作用不在于定義外部變量或函數(shù),而在于引用定義,如果在其他編譯器中去掉#include”test.c",不然會(huì)出現(xiàn)重定義(例如visual studio)。
hello.c文件中:
#include <stdio.h>#include "test.c"?? //引用test.c文件extern void say();void printLine()???? //這里定義的方法對(duì)嗎?{?? printf("**************\n");???}int main(){??? say();??? return 0;}
test.c文件中:
#include <stdio.h>extern void printLine();void say(){??? printLine();??? printf("I love imooc\n");??? printf("good good study!\n");??? printf("day day up!\n");??? printLine();}
fenx_cc 提問(wèn)者
舉報(bào)
C語(yǔ)言入門視頻教程,帶你進(jìn)入編程世界的必修課-C語(yǔ)言
2 回答不是說(shuō)外部函數(shù)extern可以省略么?
1 回答C語(yǔ)言規(guī)定,在沒有指定函數(shù)的作用范圍時(shí),系統(tǒng)會(huì)默認(rèn)認(rèn)為是外部函數(shù),因此當(dāng)需要定義外部函數(shù)時(shí)extern也可以省略。
1 回答可以省略extern嗎
1 回答為什么要在printline定義外部函數(shù)呢?應(yīng)該在say前面定義外部函數(shù)吧?
1 回答把倆函數(shù)都定義成外部函數(shù)
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2016-06-26
因?yàn)槲募ello.c的printLine()函數(shù)和test.c中的say()函數(shù)是被相互引用的,因此這兩個(gè)函數(shù)都應(yīng)為外部函數(shù),在兩個(gè)文件中都必須聲明引用。所以小編的答案是錯(cuò)誤的!具體代碼如下:
補(bǔ)充:extern的主要作用不在于定義外部變量或函數(shù),而在于引用定義,如果在其他編譯器中去掉#include”test.c",不然會(huì)出現(xiàn)重定義(例如visual studio)。
hello.c文件中:
#include <stdio.h>
#include "test.c"?? //引用test.c文件
extern void say();
void printLine()???? //這里定義的方法對(duì)嗎?
{
?? printf("**************\n");???
}
int main()
{
??? say();
??? return 0;
}
test.c文件中:
#include <stdio.h>
extern void printLine();
void say(){
??? printLine();
??? printf("I love imooc\n");
??? printf("good good study!\n");
??? printf("day day up!\n");
??? printLine();
}