課程
/后端開發(fā)
/C
/C語言入門
把源文件帶額static改為extern為什么不對?
2019-02-03
源自:C語言入門 5-13
正在回答
注意到第二個源文件也就是test.c【后面將用T代替】調(diào)用了第一個源文件hello.c【后面將用H代替】中的函數(shù),因此我們先將H中被T調(diào)用的函數(shù)printLine()修改為外部函數(shù)也就是加上一個extern,這樣T也就是一個正常的源文件了。? ?現(xiàn)在討論兩種情況:
A。當(dāng)我們把T編譯為靜態(tài)函數(shù)的時候——static say()? ?,我們在H若要使用T的這個靜態(tài)函數(shù),這需要將他調(diào)用過來,而一個靜態(tài)函數(shù)是無法直接調(diào)用的,此時我們需要先引入say()函數(shù)所在的源文件,也就是H中的第二行代碼的用意。? ? ?
B。當(dāng)我們把T編譯為動態(tài)函數(shù)的時候——say()或者extern say()【因為extern可以省略】,我們?nèi)粢贖中使用T的這個函數(shù)say()那么我們可以直接調(diào)用,因為say()是一個外部函數(shù),無需引入其所在的源文件T也就是不需要H的第二行,因此會有人說“只要把第二行注釋掉就行了”其實這句話的前提是say()是一個外部函數(shù)。
#include <stdio.h>
//#include "test.c"? ?//引用test.c文件
extern? void printLine()? ? ?//這里定義的方法對嗎?
{
? ?printf("**************\n");? ?
}
int main()
? ? say();
? ? return 0;
第二行用//注釋一下
海問香00
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
3 回答哪位大神幫忙看下,哪里出問題了呢?
2 回答求大神幫忙看看問題出哪里了?
4 回答大神,幫幫忙看看哪出錯了!
1 回答請大神幫忙看一下哪里有問題
1 回答請大神幫忙看下這排序的函數(shù)問題出在哪里
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2019-02-21
注意到第二個源文件也就是test.c【后面將用T代替】調(diào)用了第一個源文件hello.c【后面將用H代替】中的函數(shù),因此我們先將H中被T調(diào)用的函數(shù)printLine()修改為外部函數(shù)也就是加上一個extern,這樣T也就是一個正常的源文件了。? ?現(xiàn)在討論兩種情況:
A。當(dāng)我們把T編譯為靜態(tài)函數(shù)的時候——static say()? ?,我們在H若要使用T的這個靜態(tài)函數(shù),這需要將他調(diào)用過來,而一個靜態(tài)函數(shù)是無法直接調(diào)用的,此時我們需要先引入say()函數(shù)所在的源文件,也就是H中的第二行代碼的用意。? ? ?
B。當(dāng)我們把T編譯為動態(tài)函數(shù)的時候——say()或者extern say()【因為extern可以省略】,我們?nèi)粢贖中使用T的這個函數(shù)say()那么我們可以直接調(diào)用,因為say()是一個外部函數(shù),無需引入其所在的源文件T也就是不需要H的第二行,因此會有人說“只要把第二行注釋掉就行了”其實這句話的前提是say()是一個外部函數(shù)。
2019-02-05
#include <stdio.h>
//#include "test.c"? ?//引用test.c文件
extern? void printLine()? ? ?//這里定義的方法對嗎?
{
? ?printf("**************\n");? ?
}
int main()
{
? ? say();
? ? return 0;
}
第二行用//注釋一下