導航:首頁 > 源碼編譯 > 編譯頭文件函數

編譯頭文件函數

發布時間:2022-05-07 04:47:19

1. 如何在C++頭文件中定義函數,然後在源文件中使用

/*在text。h頭文件中進行聲明*/

#include<iostream>

using namespace std;

void display(int,int);/*使用該函數來實現輸出*/

/*在texxt。cpp中進行定義,注意第一行,很重要因為不是c++標准庫中的頭文件,所以不能用<>,而要用""括起頭文件*/

#include "text.h"

void display(int x,int y)

{

cout<<"A="<<x<<"B="<<y<<endl;

}

/*在主函數中進行調用函數*/

#include "text.h"

int main()

{

int a,int b;

cout<<"please input a &b"<<endl;

cin>>a>>b;

display(a,b);

return 0;

}

(1)編譯頭文件函數擴展閱讀:

關於上述中一些關鍵詞的注意事項

h叫做頭文件,它是不能被編譯的。「#include」叫做編譯預處理指令,可以簡單理解成,在1.cpp中的#include"1.h"指令把1.h中的代碼在編譯前添加到了1.cpp的頭部。每個.cpp文件會被編譯,生成一個.obj文件,然後所有的.obj文件鏈接起來你的可執行程序就算生成了。

你要在.h文件中嚴格區分聲明語句和定義語句,好的習慣是,頭文件中應只處理常量、變數、函數以及類等等等等的聲明,變數的定義和函數的實現等等等等都應該在源文件.cpp中進行。

至於.h和.cpp具有同樣的主文件名的情況呢,對編譯器來講是沒有什麼意義的,編譯器不會去匹配二者的主文件名,只認#include等語句。

但是這樣寫是一種約定俗成的編程風格,一個類的名字作為其頭文件和源文件的主文件名比如Class1.h和Class1.cpp,這個類的聲明在Class1.h中,實現在Class1.cpp中,看起來比較整齊,讀起來方便,也很有利於模塊化和源代碼的重用。

2. 關於c語言頭文件編譯和運行的問題

1、只要在程序開頭加入#include<頭文件名>,在編譯過程當中,頭文件自動會被添加到源文件當中一起進行編譯。
2、編譯,編譯程序讀取源程序(字元流),對之進行詞法和語法的分析,將高級語言指令轉換為功能等效的匯編代碼,再由匯編程序轉換為機器語言,並且按照操作系統對可執行文件格式的要求鏈接生成可執行程序。
C源程序頭文件-->預編譯處理(cpp)-->編譯程序本身-->優化程序-->匯編程序-->鏈接程序-->可執行文件。

3. c++中如何編譯頭文件,編譯頭文件的作用,

編譯頭文件的理解竅門,在include語句。
你可以理解為,include就是替換,在編譯的時候,在include的位置完整的將頭文件「嵌入」進去,在cpp文件中共同編譯。如果一個頭文件沒有被任何文件包含(include),那麼它不會編譯。
頭文件,你可以簡單的認為就是「避免重復」,將重復的聲明放在一起,方便代碼閱讀和管理,同時頭文件具有方便介面和安全檢查方面的作用。

4. C++頭文件中函數聲明定義

其實,網上有很多類似的文章,隨便網路一下就可以查明白,雖然明白,但我還是幫你網路了一下系統的文章。

C++/C源程序通常分為兩類文件。一類文件用於保存程序的聲明,稱為頭文件;另一類文件用於
保存程序的實現,稱為源文件(或者定義文件)。
編譯器在掃描到一條函數調用語句時首先應當知道該函數的原型或定義,函數原型一般都放在頭文件中,函數定義則放在源文件中,當源文件或頭文件通過#include指令包含另一個頭文件的時候,編譯預處理器用頭文件的內容取代#include偽指令。這就是說,頭文件的所有內容最終都會被合並到某一個或某幾個源文件中,如此將每一個包含的頭文件遞歸地展開後形成的源文件就叫編譯單元。如果象你說的,直接在頭文件中定義函數的執行代碼,也是可以的,但這會造成編譯單元多了一些不必要的代碼。

頭文件的主要作用如下:

1)通過頭文件來調用庫功能。在很多場合,源代碼不便(或不準)向用戶公布,只要向用戶
提供頭文件和二進制的庫即可
2)頭文件能加強類型安全檢查。如果某個介面被實現或被使用時的方式與頭文件中的聲明不
一致,編譯器就會指出錯誤
3)頭文件可以提高程序的可讀性(清晰性)。

5. linux下編寫c語言頭文件,編譯時出現「函數未定義」

出現該錯誤的原因為編譯時只變編譯了源文件的一部分,故在鏈接時無法從編譯好的目標代碼中找到print函數,所以出錯。


根據你的源文件結構,個人推薦先單獨編譯源文件為多個object文件,再統一鏈接。

方法如下

gcc-cmain.c#-c參數的作用是讓gcc只編譯,不鏈接
gcc-ctest.c
gcc-omainmain.otest.o#將編譯好的目標代碼鏈接

當然,以上是在gcc為編譯器的前提下執行,如使用clang等其他編譯器,方法類似(clang的調用方法與gcc高度兼容)

6. C語言頭文件裡面應該寫什麼東西

1、一般做法是頭文件里只寫 函數 原型。函數定義部分可以編譯成 .obj 形式。應用時,調用程序里寫頭文件和調用語句,編譯時,把.obj 鏈接進去就可以了。你也可以把頭文件和 .obj 給別人,別人可以使用你的函數,但看不見你的源程序 -- 庫程序的基本原理就是這樣的。當然,不編成.obj ,而直接把10多個函數源程序寫進去也可以。

2、C語言頭文件

(1)在C語言家族程序中,頭文件被大量使用。一般而言,每個C++/C程序通常由頭文件(header files)和定義文件(definition files)組成。頭文件作為一種包含功能函數、數據介面聲明的載體文件,主要用於保存程序的聲明(declaration),而定義文件用於保存程序的實現 (implementation)。 .c就是你寫的程序文件。

(2)一般在一個應用開發體系中,功能的真正邏輯實現是以硬體層為基礎,在驅動程序、功能層程序以及用戶的應用程序中完成的。頭文件的主要作用在於多個代碼文件全局變數(函數)的重用、防止定義的沖突,對各個被調用函數給出一個描述,其本身不需要包含程序的邏輯實現代碼,它只起描述性作用,用戶程序只需要按照頭文件中的介面聲明來調用相關函數或變數,鏈接器會從庫中尋找相應的實際定義代碼。

(3)從以上結構圖來看,頭文件是用戶應用程序和函數庫之間的橋梁和紐帶。在整個軟體中,頭文件不是最重要的部分,但它是C語言家族中不可缺少的組成部分。編譯時,編譯器通過頭文件找到對應的函數庫,進而把已引用函數的實際內容導出來代替原有函數。進而在硬體層面實現功能。

7. 關於在linux下用gcc編譯頭文件

首先,確定你的頭文件都用宏隔開了,防止了重復定義。例如,在file.h 中的開頭就是
#ifndef __FILE__HEAD___
#define __FILE__HEAD___
//頭文件中的內容
#endif //__FILE__HEAD___
之後,
file.h中用到了list.h ,所以file.h中#include "list.h"//假設頭文件都在同一目錄下
list.h中用到了preapre.h 所以list.h中#include "prepare.h"
prepare.h中用到了node.h 所以prepare.h中#include "node.h"

在某些情況下,由於代碼組織等的問題,還是會出現編譯問題,這個就是代碼組織技巧的問題了,要根據具體代碼具體判斷了。
另外,准確的說頭文件只是在編譯的第一步,預處理的時候使用了,真正被「編」的應該是源文件,這個是編譯原理方面的問題了。

8. c語言中如何編譯含頭文件的函數

在使用頭文件聲明的函數或結構的文件中添加#include"該頭文件"
一般來說該頭文件和.c文件同一目錄,或者放到編譯器能自動找到的位置

9. c編譯器編譯了頭文件中的主函數,但未編譯頭文件中的了函數

應該是沒有關系的,你把編譯步驟寫清楚,編譯結果和參數說清楚。
根據我對編譯器的理解,這種情況不會發生,最大可能性有幾種:
1、你的代碼本身就很小,你沒有注意到,(一個20K行的程序,編譯出來只有不到15K是十分正常的)因為程序里往往包括注釋、空行等。
2、程序的體積往往取決於變數初始化,例如static int i[1000]={0};這會產生大量的無效代碼。
3、其他編譯器代碼體積問題。
4、編譯參數導致優化方式不一致
其他:如果程序可以運行,說明一定全部都編譯了。
具體的問題,你可以把全部代碼都給我,我幫你看看。這么簡單說有時很難,畢竟寫程序考慮到編譯器和硬體缺陷的人現在很少。

閱讀全文

與編譯頭文件函數相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:579
python員工信息登記表 瀏覽:377
高中美術pdf 瀏覽:161
java實現排列 瀏覽:513
javavector的用法 瀏覽:982
osi實現加密的三層 瀏覽:233
大眾寶來原廠中控如何安裝app 瀏覽:916
linux內核根文件系統 瀏覽:243
3d的命令面板不見了 瀏覽:526
武漢理工大學伺服器ip地址 瀏覽:149
亞馬遜雲伺服器登錄 瀏覽:525
安卓手機如何進行文件處理 瀏覽:71
mysql執行系統命令 瀏覽:930
php支持curlhttps 瀏覽:143
新預演算法責任 瀏覽:444
伺服器如何處理5萬人同時在線 瀏覽:251
哈夫曼編碼數據壓縮 瀏覽:426
鎖定伺服器是什麼意思 瀏覽:385
場景檢測演算法 瀏覽:617
解壓手機軟體觸屏 瀏覽:350