可以調(diào)用。

成都創(chuàng)新互聯(lián)專注于衡陽企業(yè)網(wǎng)站建設,自適應網(wǎng)站建設,商城系統(tǒng)網(wǎng)站開發(fā)。衡陽網(wǎng)站建設公司,為衡陽等地區(qū)提供建站服務。全流程按需定制網(wǎng)站,專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務
一、從一個源文件里調(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文件要 對應有一個.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、把相應的函數(shù)定義寫在.c文件中。這里要強調(diào)一點:要加上#include ".h",這個一般作為一種工程規(guī)范。因為如果.c文件中的函數(shù)也需要調(diào)用同個.c中的其它函數(shù),那么這個.
c往往會include對應的.h,這樣就不需要為聲明和調(diào)用順序而發(fā)愁了。比如頭文件里進行了變量的聲明,這個時候?qū)?c文件是一定要加上這個頭文件的。
3、再在其他的main.c文件開頭添加#include "a.h"。
擴展資料:
include用法:
#include命令預處理命令的一種,預處理命令可以將別的源代碼內(nèi)容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。
插入頭文件的內(nèi)容
#include命令告訴預處理器將指定頭文件的內(nèi)容插入到預處理器命令的相應位置。有兩種方式可以指定插入頭文件:
1、#include文件名
2、#include"文件名"
如果需要包含標準庫頭文件或者實現(xiàn)版本所提供的頭文件,應該使用第一種格式。如下例所示:
#includemath.h//一些數(shù)學函數(shù)的原型,以及相關的類型和宏
如果需要包含針對程序所開發(fā)的源文件,則應該使用第二種格式。
采用#include命令所插入的文件,通常文件擴展名是.h,文件包括函數(shù)原型、宏定義和類型定義。只要使用#include命令,這些定義就可被任何源文件使用。
file1.c 頭文件為file1.h
file2.c 頭文件為file2.h
比如file2.c要調(diào)用file1.c里的一個函數(shù)
首先file2.c里要包含file1.h頭文件(file1.h里有file1.c的函數(shù)申明)
然后file2.c文件里要有file1.c里的外部函數(shù)申明,用extern關鍵字申明
然后就可以直接file2.c里面調(diào)用file1.c里的函數(shù)了
我在單片機里是這樣弄的完全沒問題,51,avr,pic都可以
當然可以啦。\x0d\x0a舉個例子吧:兩個文件 main.c function.c\x0d\x0a我們在function.c 中寫一個函數(shù) func();\x0d\x0a與此同時,我們需要寫一個.h文件來聲明這個函數(shù),即function.h\x0d\x0a// 以下是function.h 的內(nèi)容\x0d\x0a#ifndef __FUNCTION_H__\x0d\x0a#define __FUNCTION_H__\x0d\x0a\x0d\x0avoid func();\x0d\x0a#endif\x0d\x0a\x0d\x0a// 以下是function.c 的內(nèi)容\x0d\x0a#include "function.h"\x0d\x0a\x0d\x0avoid func()\x0d\x0a{\x0d\x0a // do something\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a這樣一來,我們想要在另外一個文件,也就是main.c 中調(diào)用這個函數(shù)的時候,只需要包含它對應的頭文件,就可以直接調(diào)用了。\x0d\x0a// 以下是main.c 的內(nèi)容\x0d\x0a#include "stdio.h"\x0d\x0a#include "function.h"\x0d\x0a\x0d\x0aint main()\x0d\x0a{\x0d\x0a func();\x0d\x0a\x0d\x0a return 0;\x0d\x0a}
調(diào)用函數(shù)庫的話用#include?XXX.h或者#include"XXX.h"區(qū)別是你庫文件放在同一個文件夾還是在IDE的安裝目錄下面,如果你庫文件在你工程文件夾里面用#includeXXX.h,否則用#include?"XXX.h"
如果你說自己寫庫的話是需要兩個宏命令,#ifndef?_XXX_H?#define?_XXX_H,然后你函數(shù)名用extern表示
如果你說編譯的話,你應該說的是編譯原理吧,你可以反匯編一下一個編譯好的程序,如果該處編譯了一個其他函數(shù)庫的函數(shù),你可以看到程序把參數(shù)PUSH到內(nèi)存后CALL或者LCALL了一個這個函數(shù)的地址,這就完成了匯編中調(diào)用函數(shù)的部分,我記得X86里面CALL的機器碼是E8H吧,有興趣的話可以自己用反匯編看一下
這個CALL的話就是調(diào)用函數(shù)的功能
以Linux下的gcc為例:從C程序主函數(shù)main.c中調(diào)用另一個文件fun.c里函數(shù)的方法1.直接編譯 gcc main.c fun.c2.在main.c文件內(nèi)容開頭添加 #include “fun.c” 然后 gcc main.c3.在main.c 文件內(nèi)容開頭添加 #include “fun.h” 然后 gcc main.c fun.c4.在main.c 文件內(nèi)容開頭添加 #include fun.h(此時fun是庫函數(shù)) 然后gcc main.c
新建 project
然后添加 文件
main 所在程序中 添加函數(shù)聲明 就可以調(diào)用了
main.c
#include stdio.h
extern int add(int a, int b);
int main(void)
{
int a = 1, b = 2;
printf("%d",add(a,b));
}
2.c
int add(int a, int b)
{
return a + b;
}
本文名稱:c語言跨函數(shù)文件 c語言類型強制轉(zhuǎn)換例子
分享地址:http://www.yijiale78.com/article18/docjidp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、標簽優(yōu)化、網(wǎng)站設計、定制開發(fā)、商城網(wǎng)站、自適應網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)