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

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

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

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)目的方式是,有一個(gè)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是何物的年代,那時(shí)的人們寫了很多的.c(.cpp)文件,漸漸地,人們發(fā)現(xiàn)在很多.c(.cpp)文件中的聲明語句就是相同的,但他們卻不得不一個(gè)字一個(gè)字地重復(fù)地將這些內(nèi)容敲入每個(gè).c(.cpp)文件。但更為恐怖的是,當(dāng)其中一個(gè)聲明有變更時(shí),就需要檢查所有的.c(.cpp)文件。

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

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

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

h文件在編譯原理

那么為什么在.h文件中實(shí)現(xiàn)函數(shù)也不會出錯(cuò)呢?在.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個(gè)步驟:

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

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

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

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

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

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

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

總結(jié)

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

相關(guān)文章

最新評論

合江县| 江达县| 宜阳县| 西吉县| 五河县| 利川市| 长沙县| 府谷县| 昆明市| 东方市| 莆田市| 镇沅| 永州市| 太仆寺旗| 汉沽区| 南丹县| 沾化县| 达日县| 慈溪市| 荣成市| 合作市| 林州市| 中江县| 景泰县| 浙江省| 竹山县| 滨州市| 商水县| 林州市| 汤阴县| 凤阳县| 新巴尔虎左旗| 新建县| 肇庆市| 留坝县| 独山县| 元谋县| 囊谦县| 重庆市| 扎囊县| 南川市|