以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
成都創(chuàng)新互聯(lián)公司服務(wù)項目包括井陘礦網(wǎng)站建設(shè)、井陘礦網(wǎng)站制作、井陘礦網(wǎng)頁制作以及井陘礦網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,井陘礦網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到井陘礦省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
當然可以啦。\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ù)的時候,只需要包含它對應(yīng)的頭文件,就可以直接調(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}
不能,C語言中的static函數(shù),內(nèi)部函數(shù)和外部函數(shù),函數(shù)一旦定義后就可被其它函數(shù)調(diào)用。
當一個源程序由多個源文件組成時,在一個源文件中定義的函數(shù)能否被其它源文件中的函數(shù)調(diào)用,C語言又把函數(shù)分為兩類。
如果在一個源文件中定義的函數(shù)只能被本文件中的函數(shù)調(diào)用,而不能被同一源程序其它文件中的函數(shù)調(diào)用, ? 這種函數(shù)稱為內(nèi)部函數(shù)。
內(nèi)部函數(shù)也稱為靜態(tài)函數(shù),但此處靜態(tài)static 的含義已不是指存儲方式,而是指對函數(shù)的調(diào)用范圍只局限于本文件。
外部函數(shù)在整個源程序中都有效,其定義的一般形式為extern ? 類型說明符 ? 函數(shù)名形參表。
C語言中static函數(shù),只能被本文件中的函數(shù)所使用,別的c文件中不能訪問這個函數(shù),而且你可以在別的文件中定義與之同名的函數(shù),不會互相干擾。
調(diào)用函數(shù)庫的話用#include?XXX.h或者#include"XXX.h"區(qū)別是你庫文件放在同一個文件夾還是在IDE的安裝目錄下面,如果你庫文件在你工程文件夾里面用#includeXXX.h,否則用#include?"XXX.h"
如果你說自己寫庫的話是需要兩個宏命令,#ifndef?_XXX_H?#define?_XXX_H,然后你函數(shù)名用extern表示
如果你說編譯的話,你應(yīng)該說的是編譯原理吧,你可以反匯編一下一個編譯好的程序,如果該處編譯了一個其他函數(shù)庫的函數(shù),你可以看到程序把參數(shù)PUSH到內(nèi)存后CALL或者LCALL了一個這個函數(shù)的地址,這就完成了匯編中調(diào)用函數(shù)的部分,我記得X86里面CALL的機器碼是E8H吧,有興趣的話可以自己用反匯編看一下
這個CALL的話就是調(diào)用函數(shù)的功能