最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++程序中添加.c.h的實(shí)現(xiàn)方法

 更新時間:2023年08月01日 10:11:32   作者:zxz520zmg  
這篇文章主要介紹了C++程序中添加.c.h的實(shí)現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

C++程序中添加.c.h的方法

 方法一

 1、把要添加的.c和.h文件復(fù)制到c++程序目錄中。  

 2、把.c文件改為.cpp文件  

 3、把.c.h文件都添加到該項(xiàng)目中 就可以使用了 

方法二

 1、項(xiàng)目配置不使用預(yù)編譯頭  

2、.c文件加載到程序需中 

 3、把c語言函數(shù)的聲明用extern "C"{};中。  

現(xiàn)在最好的寫法是:  

?//test.h?
?#ifdef __cplusplus?
?extern "C" {?
?#endif?
?//c語言函數(shù)聲明寫在這?
?#ifdef __cplusplus?
?}?
?#endif?
? //test.c?
? //.c開頭出?
?#ifdef __cplusplus?
?extern "C" {?
?#endif?
?#include "test.h"?
?//.c文件內(nèi)容?
?#ifdef __cplusplus?
?}?
?#endif?
?//.c文件結(jié)束?

C/C++中的.h和.c文件

編譯器的工作過程

涉及到的函數(shù)、結(jié)構(gòu)體、變量等比較多。通常,編寫c/c++項(xiàng)目的方式是,有一個main.c文件,該文件的main函數(shù)作為接口,調(diào)用其他函數(shù)。所有其他函數(shù)按功能,分別放在不同的.h文件中,這樣的方式在編譯和運(yùn)行上肯定是沒有什么問題的。

隨著項(xiàng)目編寫的深入,結(jié)構(gòu)、邏輯以及變量的日趨復(fù)雜,總感覺上述方式的實(shí)現(xiàn)仍然不夠清晰并且會導(dǎo)致一些冗余。忽然記起,在課堂上,老師提到過,.h文件一般用來存放函數(shù)聲明和變量名,那么為什么我在.h文件中實(shí)現(xiàn)函數(shù)不會有問題呢?其他.c文件和main.c文件又有什么關(guān)系呢?這些,都使我不得不重新思考.h文件和.c文件的作用和關(guān)系。

.h文件的由來和弊端

要理清.h文件的作用,我們不妨看看.h文件的由來:

“在編譯器只認(rèn)識.c(.cpp))文件,而不知道.h是何物的年代,那時的人們寫了很多的.c(.cpp)文件,漸漸地,人們發(fā)現(xiàn)在很多.c(.cpp)文件中的聲明語句就是相同的,但他們卻不得不一個字一個字地重復(fù)地將這些內(nèi)容敲入每個.c(.cpp)文件。但更為恐怖的是,當(dāng)其中一個聲明有變更時,就需要檢查所有的.c(.cpp)文件。

于是人們將重復(fù)的部分提取出來,放在一個新文件里,然后在需要的.c(.cpp)文件中敲入#include XXXX這樣的語句。這樣即使某個聲明發(fā)生了變更,也再不需要到處尋找與修改了。因?yàn)檫@個新文件,經(jīng)常被放在.c(.cpp)文件的頭部,所以就給它起名叫做“頭文件”,擴(kuò)展名是.h。

在我們語言的初學(xué)階段,往往我們的程序只有一個.c的文件或這很少的幾個,這時我們就很少遇到頭文件組織這個頭疼的問題,隨著我們程序的增加,代碼 量到了幾千行甚至幾萬行,文件數(shù)也越來越多。這時這些文件的組織就成了一個問題,其實(shí)說白了這些文件的組織問題從理論上來說是軟件工程中的模塊設(shè)計等等的問題。”(引自c語言項(xiàng)目中.h文件和.c文件的關(guān)系)

由上可以看出,.h文件最初就是用來給變量和函數(shù)提供一些全局性的聲明,這些聲明被其他.c文件共享,方便變量和聲明的修改,使得大型代碼邏輯更清晰更易于維護(hù)。因此.h文件中一般是聲明,很少有代碼的具體實(shí)現(xiàn)。

h文件在編譯原理

那么為什么在.h文件中實(shí)現(xiàn)函數(shù)也不會出錯呢?在.h文件中實(shí)現(xiàn)函數(shù)與在.c文件中實(shí)現(xiàn)函數(shù)有什么區(qū)別和聯(lián)系呢?普通的.C文件和包含main函數(shù)的c文件有什么區(qū)別和聯(lián)系呢?

要解決上述問題,首先必須弄清編譯器的工作原理。編譯器的最終目的是將程序員編寫的源代碼轉(zhuǎn)換成機(jī)器能夠識別運(yùn)行的二進(jìn)制機(jī)器碼。

大體上分,可以分為4個步驟:

1.頭文件的預(yù)編譯,預(yù)處理

  • 編譯器在編譯源代碼時,會先編譯頭文件,保證每個頭文件只被編譯一次。
  • 在預(yù)處理階段,編譯器將c文件中引用的頭文件中的內(nèi)容全部寫到c文件中。

2.詞法和語法分析(查錯)

3.編譯(匯編代碼,.obj文件)

  • 轉(zhuǎn)化為匯編碼,這種文件稱為目標(biāo)文件。后綴為.obj。

4.鏈接(二進(jìn)制機(jī)器碼,.exe文件)

  • 將匯編代碼轉(zhuǎn)換為機(jī)器碼,生成可執(zhí)行文件。
  • 更詳細(xì)具體的流程可參考編譯器的工作過程
  • 在編譯過程中,.h文件中的所有內(nèi)容會被寫到包含它的.c文件中,而所有的.c文件以一個共同的main函數(shù)作為可執(zhí)行程序的入口。
  • 因此,在.h文件中編寫函數(shù)實(shí)現(xiàn)并不會出錯,相當(dāng)于所有.h的內(nèi)容最后都被寫到了main.c文件中。
  • 但是為了邏輯性、易于維護(hù)性以及一些其他目的(可參考c語言中.h文件和.c文件的解析),一般在.h文件中寫函數(shù)的聲明,在.c文件中編寫函數(shù)的實(shí)現(xiàn)。

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

金阳县| 陆河县| 孙吴县| 萨迦县| 缙云县| 苗栗县| 淮安市| 隆昌县| 平武县| 徐水县| 蒙山县| 临西县| 湖南省| 汶上县| 武夷山市| 三都| 新巴尔虎右旗| 沙雅县| 闻喜县| 天气| 阿拉善左旗| 马山县| 会东县| 哈密市| 永安市| 仁寿县| 聊城市| 老河口市| 锡林郭勒盟| 永州市| 武穴市| 南阳市| 城市| 临湘市| 安丘市| 应城市| 广河县| 灵川县| 青龙| 巫山县| 汽车|