新聞中心
C語言中怎么調(diào)用外部函數(shù)?
1、外部函數(shù)extern時聲明這個函數(shù)為外部函數(shù),本文件不做定義,只調(diào)用,編譯不會出錯,但不能運行(沒有函數(shù)實體)。如果想有運行結(jié)果就必須將函數(shù)實體包含進來,所以文件包含和extern是配合使用的。文件包含只需要包含.h就是實體的頭文件,但有些軟件貌似不能識別頭文件和c的關(guān)系,所以就只能包含.c文件。
你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標準是產(chǎn)品質(zhì)量的保證,主要從事成都網(wǎng)站設(shè)計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、企業(yè)網(wǎng)站建設(shè)、手機網(wǎng)站制作設(shè)計、網(wǎng)頁設(shè)計、品牌網(wǎng)站制作、網(wǎng)頁制作、做網(wǎng)站、建網(wǎng)站。創(chuàng)新互聯(lián)建站擁有實力堅強的技術(shù)研發(fā)團隊及素養(yǎng)的視覺設(shè)計專才。
2、也就是說外部函數(shù)extern只是個聲明,他告訴編譯器我用到了一個外部函數(shù),但如果該文件沒有將函數(shù)實體包含進來,編譯器是找不到的,依然是不能運行的,所以extern只是個聲明,并沒有做任何事,只是這樣是沒用的。include是包含一個文件,就是類似于該文件復(fù)制到此處(只是說類似,其實是個查找路徑,讓編譯器去該路徑查找函數(shù))。
單片機 C語言,如何調(diào)用外部自定義函數(shù)。
函數(shù)定義好以后,要被其它函數(shù)調(diào)用了才能被執(zhí)行。C
語言的函數(shù)是能相互調(diào)用的,
但在調(diào)用函數(shù)前,必須對函數(shù)的類型進行說明,就算是標準庫函數(shù)也不例外。標準庫函數(shù)的
說明會被按功能分別寫在不一樣的頭文件中,使用時只要在文件最前面用#include
預(yù)處理語
句引入相應(yīng)的頭文件。如前面一直有使用的
printf
函數(shù)說明就是放在文件名為
stdio.h
的
頭文件中。調(diào)用就是指一個函數(shù)體中引用另一個已定義的函數(shù)來實現(xiàn)所需要的功能,這個時候函
數(shù)體稱為主調(diào)用函數(shù),函數(shù)體中所引用的函數(shù)稱為被調(diào)用函數(shù)。一個函數(shù)體中能調(diào)用數(shù)個
其它的函數(shù),這些被調(diào)用的函數(shù)同樣也能調(diào)用其它函數(shù),也能嵌套調(diào)用。筆者本人認為
主函數(shù)只是相對于被調(diào)用函數(shù)而言。在
c51
語言中有一個函數(shù)是不能被其它函數(shù)所調(diào)用的,
它就是
main
主函數(shù)。調(diào)用函數(shù)的一般形式如下:
函數(shù)名
(實際參數(shù)表)
“函數(shù)名”就是指被調(diào)用的函數(shù)。實際參數(shù)表能為零或多個參數(shù),多個參數(shù)時要用逗
號隔開,每個參數(shù)的類型、位置應(yīng)與函數(shù)定義時所的形式參數(shù)一一對應(yīng),它的作用就是把參
數(shù)傳到被調(diào)用函數(shù)中的形式參數(shù),如果類型不對應(yīng)就會產(chǎn)生一些錯誤。調(diào)用的函數(shù)是無參函
數(shù)時不寫參數(shù),但不能省后面的括號。
在以前的一些例子我們也能看不一樣的調(diào)用方式:
1.函數(shù)語句
如
printf
("Hello
World!n");
這是在
我們的第一個程序中出現(xiàn)的,它以
"Hello
World!n"為參數(shù)調(diào)用
printf
這個庫函數(shù)。在這里函數(shù)調(diào)用被看作了一條語句。
2.函數(shù)參數(shù)
“函數(shù)參數(shù)”這種方式是指被調(diào)用函數(shù)的返回值當作另一個被調(diào)用函數(shù)的實際參
數(shù),如
temp=StrToInt(CharB(16));CharB
的返回值作為
StrToInt
函數(shù)的實際參數(shù)傳遞。
3.函數(shù)表達式
而在上一篇的例子中有
temp
=
Count();這樣一句,這個時候函數(shù)的調(diào)用作為一個運算
對象出現(xiàn)在表達式中,能稱為函數(shù)表達式。例子中
Count()返回一個
int
類型的返回
值直接賦值給
temp。注意的是這種調(diào)用方式要求被調(diào)用的函數(shù)能返回一個同類型的值,
不然會出現(xiàn)不可預(yù)料的錯誤。
前面說到調(diào)用函數(shù)前要對被調(diào)用的函數(shù)進行說明。標準庫函數(shù)只要用#include
引入已
寫好說明的頭文件,在程序就能直接調(diào)用函數(shù)了。如調(diào)用的是自定義的函數(shù)則要用如下形
式編寫函數(shù)類型說明
類型標識符
函數(shù)的名稱(形式參數(shù)表);
這樣的說明方式是用在被調(diào)函數(shù)定義和主調(diào)函數(shù)是在同一文件中。你也能把這些寫到
文件名.h
的文件中用#include
"文件名.h"引入。如果被調(diào)函數(shù)的定義和主調(diào)函數(shù)不是在同
一文件中的,則要用如下的方式進行說明,說明被調(diào)函數(shù)的定義在同一項目的不一樣文件之上,
其實庫函數(shù)的頭文件也是如此說明庫函數(shù)的,如果說明的函數(shù)也能稱為外部函數(shù)。
extern
類型標識符
函數(shù)的名稱(形式參數(shù)表);
函數(shù)的定義和說明是完全不一樣的,在編譯的角度上看函數(shù)的定義是把函數(shù)編譯存放在
ROM
的某一段地址上,而函數(shù)說明是告訴編譯器要在程序中使用那些函數(shù)并確定函數(shù)的地
址。如果在同一文件中被調(diào)函數(shù)的定義在主調(diào)函數(shù)之前,這個時候能不用說明函數(shù)類型。也就
是說在
main
函數(shù)之前定義的函數(shù),在程序中就能不用寫函數(shù)類型說明了。能在一個函
數(shù)體調(diào)用另一個函數(shù)(嵌套調(diào)用),但不允許在一個函數(shù)定義中定義另一個函數(shù)。還要注意
的是函數(shù)定義和說明中的“類型、形參表、名稱”等都要相一致。
C語言如何使用外部文件中的函數(shù)
1.
請使用預(yù)編譯指令
#include。加入外部文件,就可以使用外部文件的函數(shù)了。
#include放在代碼文件頭,用于告訴編譯器,文件中包含的頭文件,屬于預(yù)處理文件的一部分
。
語法為:
#include
iostream.h
(這句是程序編譯時搜索系統(tǒng)目錄文件)
#include
“HName.h"
(這句是程序編譯時搜索當前項目的文件)
2.
例如:
//函數(shù)實現(xiàn) a.c文件:
int add(int x, int y){
return x+y;
}
//主文件 main.c文件:
#include stdio.h
#include "a.c" //引入外部函數(shù)
int main(){
int i;
i = add(1,2);
printf("%d",i);
return 0;
}
c語言程序調(diào)用外部文件
可以調(diào)用。
一、從一個源文件里調(diào)用另一個源文件的函數(shù)。在源文件A1.c中調(diào)用A2.c 中的函數(shù)有兩種方法:
1、在A2.c中有完整的函數(shù)定義,在A1.c中添加一下要用到的函數(shù)原型(聲明)就可以了,例如:
在A2.c中:有函數(shù)void A2(){...};。
在A1.c中:在文件前頭增加一行:void A2();就可以了。
2、把A2.c中完整定義的函數(shù)的原型,寫到一個A2.h文件中,然后在A1.c的文件頭增加#include "A2.h"就可以了。
以上兩種方法,在A1.c中都可以正常的調(diào)用,就跟在A2.c中調(diào)用一樣。
其實函數(shù)默認是外部的,只要在其他文件中聲明就能使用;但是注意如果在前面加上static,就只能在本文件中使用了,不能再被其他的文件調(diào)用。
二、編寫頭文件:
1、一個.h文件要 對應(yīng)有一個.c文件,這樣鏈接器就可以調(diào)用這個文件里的函數(shù)。比如a.h 和 a.c。
在.h文件中:
#ifndef __A_H_
#define __A_H_
#includestdio.h
void trans2(double B) ;
double trans1() ;
#endif
2、把相應(yīng)的函數(shù)定義寫在.c文件中。這里要強調(diào)一點:要加上#include ".h",這個一般作為一種工程規(guī)范。因為如果.c文件中的函數(shù)也需要調(diào)用同個.c中的其它函數(shù),那么這個.
c往往會include對應(yīng)的.h,這樣就不需要為聲明和調(diào)用順序而發(fā)愁了。比如頭文件里進行了變量的聲明,這個時候?qū)?yīng)的.c文件是一定要加上這個頭文件的。
3、再在其他的main.c文件開頭添加#include "a.h"。
擴展資料:
include用法:
#include命令預(yù)處理命令的一種,預(yù)處理命令可以將別的源代碼內(nèi)容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預(yù)處理器會用別的文本取代該宏。
插入頭文件的內(nèi)容
#include命令告訴預(yù)處理器將指定頭文件的內(nèi)容插入到預(yù)處理器命令的相應(yīng)位置。有兩種方式可以指定插入頭文件:
1、#include文件名
2、#include"文件名"
如果需要包含標準庫頭文件或者實現(xiàn)版本所提供的頭文件,應(yīng)該使用第一種格式。如下例所示:
#includemath.h//一些數(shù)學函數(shù)的原型,以及相關(guān)的類型和宏
如果需要包含針對程序所開發(fā)的源文件,則應(yīng)該使用第二種格式。
采用#include命令所插入的文件,通常文件擴展名是.h,文件包括函數(shù)原型、宏定義和類型定義。只要使用#include命令,這些定義就可被任何源文件使用。
當前名稱:c語言調(diào)用外部函數(shù)調(diào)用 c語言如何調(diào)用外部函數(shù)
網(wǎng)頁網(wǎng)址:http://www.ef60e0e.cn/article/dogosod.html