小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C語言多個源文件編譯

 走出塵埃 2016-12-20

多源文件編譯:

新建一個 main.c

#include #include int main(){ int i = myMax(20,40); printf('i = %d',i); system('pause'); return0;}

然后再創(chuàng)建一個 a.c

int myMax(int a,int b) { if(a>b) return a; return b;}

然后編譯

如果不是 visual studio C++ 的環(huán)境的話,會報錯的。所以我用了dev C++就報了錯。

錯誤信息:

8 21 F:\c++codeInDev\多源文件編譯\main.c [Error] 'myMax' was not declared in this scope

說 myMax 沒這個函數(shù)。

所以 需要一個 函數(shù)的聲明。

main.c 代碼:

#include #include int myMax(int a,int b);int main(){ int i = myMax(20,40); printf('i = %d',i); system('pause'); return0; }

第二種寫法——采用加載頭文件的方式:

main.c 代碼:

#include #include 'a.h'int main() { printf('較大的數(shù)字是:%d\n',myMax(20,30)); return0;}

a.h代碼:

int myMax(int a,int b);

a.c 代碼:

int myMax(int a,int b){ if(a>b) return a; return b;}

擴展:

main.c代碼

#include #include 'a.h' #include 'b.h'int main() { printf('較大的數(shù)字是:%d\n',myMax(20,40)); printf('兩數(shù)之和是:%d\n',myAdd(20,50)); return0;}

a.c代碼:

int myMax(int a,int b){ if(a>b) return a; return b;}

a.h 代碼:

int myMax(int a,int b){ if(a>b) return a; return b;}

b.h 代碼:

int myAdd(int a, int b);

b.c 代碼:

int myAdd(int a, int b){ return a+b;}

運行結(jié)果示例:

馬上要引出一個 別的事兒:

dev竟然不可以復(fù)制文件夾,估計有什么隱含設(shè)置。。。在 android里面 和 javaweb里面都有這么一個東西的。android太久不弄有點兒忘記了,在 javaweb里面,選中一個項目,摁住alt+Enter,然后 搜索 web。然后再修改這個 項目的名稱,否則當(dāng)前復(fù)制的項目會覆蓋之前的那個項目。在發(fā)布之后】

那就在 這個 上面改吧。。。

如果 b.h 里面包含了 a.h 那么會出現(xiàn)什么樣的狀況呢?

修改后的b.h:

#include 'a.h'int myAdd(int a, int b);

好吧,竟然沒有問題。

但是 理論上這樣多包含了一個 int myMax(int a,int b);就相當(dāng)于重復(fù)的聲明在main.c了照理說是不可以的。

所以誕生了 #ifndef #define #endif

所以把程序 寫成這樣:

好吧 就是 想引入這個 如果 沒有定義的話,就定義 這樣一個 概念。

示例代碼://我們可以學(xué)著照抄人家的代碼,人家的這種.h 文件基本上都是這樣做的。完后看基本上都是 #endif 結(jié)尾的

修改的部分:

a.h 代碼:

#ifndef _AH#define _AHint myMax(int a,int b);#endif

b.h 代碼:

#ifndef _BH#define _BHint myAdd(int a, int b);#endif

這是 原來本身c語言里面提供的類庫文件的書寫格式,下面截了個圖

可以看到人家也是這么操作的。

相關(guān)描述:

extern c++特有的!聲明這段東西要以,C的方式編譯。用在 dll的書寫上,dll這個 東西真的是很神奇。是動態(tài)加載的類庫文件。這種動態(tài)加載是在程序運行的時候,把當(dāng)前這個 exe文件和exe所需要的dll文件一起在內(nèi)存中開辟一塊空間。所以這樣就導(dǎo)致exe做出來可以很小。但是對于靜態(tài)的lib來說。需要一起打包在exe文件中,這樣exe就很大。并且每次改動都需要重新編譯exe文件。但是對于dll的話,只需要重新編譯這一部分,然后把dll放到對應(yīng)目錄下面,就可以了。并且,通常情況下,高級語言開發(fā)上層,邏輯部分很迅速。但是用c就很乏力,但是對于某些必須要操作硬件的部分就只能使用C開發(fā)好dll,然后可以讓java等上層語言進行調(diào)用。這樣的語言除了java還有 C++,python等等.

標(biāo)簽: c語言, 多源文件編譯

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多