紅頭文件的由來(lái)
紅頭文件是一種特殊的文件,它包含了C++程序中所需要的聲明和定義。紅頭文件通常以.h為后綴,例如stdio.h、string.h、iostream.h等。
聲明(declaration)是指在C++中引入一個(gè)名字的過(guò)程,如變量、函數(shù)名、類名和模板名。聲明只是告訴編譯器這個(gè)名字存在,但不會(huì)告訴編譯器關(guān)于這個(gè)名字的具體信息。相反,定義(definition)是提供有關(guān)名字的具體信息的過(guò)程。因此,當(dāng)在C++中使用一個(gè)未聲明的名字時(shí),會(huì)引起錯(cuò)誤。
大多數(shù)情況下,我們不必顯式地對(duì)一個(gè)已聲明的內(nèi)容進(jìn)行定義。例如對(duì)于內(nèi)置類型、內(nèi)置函數(shù)和內(nèi)置操作符,標(biāo)準(zhǔn)C++庫(kù)已為我們提供了定義。然而對(duì)于自定義的內(nèi)容(包括自定義的類型、函數(shù)和操作符)就必須要我們自己來(lái)進(jìn)行定義。
如果一個(gè)文件只包含聲明而不包含定義(或者包含部分聲明和部分定義),則這個(gè)文件就是一個(gè)頭文件(headerfile)。當(dāng)然對(duì)于包含代表特定領(lǐng)域功能的大量聲明和/或定義而被人們廣泛使用的文件就通常被成為庫(kù)(library)了。標(biāo)準(zhǔn)C++庫(kù)就是一個(gè)很好的例子——它由大量頭文件所構(gòu)成并提供了已被廣泛使用功能集。
紅頭文件的作用
紅頭文件是指包含C++程序代碼的頭文件。由于C++程序代碼通常分為很多不同的文件,而且在這些文件之間相互依賴,所以需要使用頭文件來(lái)將代碼分割開(kāi)。
頭文件比較特殊,它并不是一個(gè)獨(dú)立的文件,而是一個(gè)包含了C++代碼的片段。當(dāng)你使用#include指令引入一個(gè)頭文件時(shí),編譯器會(huì)將這個(gè)頭文件插入到當(dāng)前正在編譯的C++代碼中。
一般來(lái)說(shuō),頭文件中包含了定義了C++標(biāo)準(zhǔn)庫(kù)中的一些常用函數(shù)、類和宏常量的聲明。當(dāng)你使用這些函數(shù)、類或者宏常量時(shí),就需要先包含相應(yīng)的頭文件。例如,如果要使用標(biāo)準(zhǔn)庫(kù)中的cout對(duì)象來(lái)輸出一行字符串,就需要在你的C++代碼中先包含
總之,理解并正確使用頭文件是很重要的。錯(cuò)誤地使用或者不恰當(dāng)?shù)厥褂妙^文件可能會(huì)導(dǎo)致編譯錯(cuò)誤、運(yùn)行錯(cuò)誤或者邏輯錯(cuò)誤。因此,如果你不明白某個(gè)頭文件提供了哪些功能,就不要隨意引入它。
紅頭文件的種類
紅頭文件是一種特殊的文件,它包含了C++程序中定義的類和函數(shù)的聲明。紅頭文件通常以.h為擴(kuò)展名,放在C++源文件中。當(dāng)編譯器遇到#include
紅頭文件可分為兩種:標(biāo)準(zhǔn)庫(kù)頭文件和自定義頭文件。
標(biāo)準(zhǔn)庫(kù)頭文件提供了一些常用的功能,如輸入輸出、字符串處理、數(shù)學(xué)運(yùn)算、內(nèi)存分配、錯(cuò)誤處理等。標(biāo)準(zhǔn)庫(kù)是由ANSI/ISOC++委員會(huì)規(guī)定的,是C++語(yǔ)言規(guī)范的一部分。因此,標(biāo)準(zhǔn)庫(kù)頭文件提供的功能是可移植性強(qiáng)的。
自定義頭文件是由開(kāi)發(fā)者創(chuàng)建的,包含了項(xiàng)目中特定功能的聲明。如果項(xiàng)目要使用某個(gè)庫(kù)(如OpenCV庫(kù))或者使用一些特定的C++特性(如STL容器),就必須包含相應(yīng)的頭文件。