1. 程式人生 > >C++之標頭檔案的變化

C++之標頭檔案的變化

C中的標頭檔案

在C語言中,當用到標準輸入輸出時(實際上大多數情況都需要用到),需要包含標頭檔案<stdio.h>;當用到字元陣列相關操作時,需要包含標頭檔案<string.h>;當需要用到數學函式相關操作時,需要包含標頭檔案<math.h>等等。例如:

#include <stdio.h>
int main(void){
	printf("Hello World!");
	return 0;
}

在上面的例子中,為了使用printf(),需要包含<stdio.h>標頭檔案。這個檔案的主要內容是有關標準輸入輸出的巨集定義

結構體定義函式定義等。如果有興趣可以開啟<stdio.h>檢視具體內容。

#include <stdio.h>的作用是將<stdio.h>檔案中的內容全部插入到當前檔案中,於是我們就可以使用<stdio.h>所定義的相關內容了。

注意:將<stdio.h>中內容插入到該檔案中這一操作在預處理時進行。有關C語言編譯過程的描述可移步C語言編譯過程

C++中的標頭檔案

在C++程式中,為了相容性,我們也可以使用<stdio.h>。但這並不是C++的推薦寫法,C++中推薦的標頭檔案是<cstdio>

,<cstdio>是將stdio.h的內容用C++標頭檔案的形式表示。類似的,<string.h>也應改寫為<cstring>,<math.h>改寫為<cmath>,如下例:

#include <cstdio>
int main() {
	printf("Hello world!");
	return 0;
}

因此,如果需要在C++程式中繼續使用C語言的一些函式,更推薦的方法應該是在以前的標頭檔案前加上c,而不是繼續使用之前的.h檔案。

當然,C++也有其特有的標頭檔案,如提供輸入輸出流的<iostream>、提供一些常用演算法的<algorithm>、提供數值操作的<numeric>等。C++為了與C語言中的標頭檔案進行區分

,在使用它們的時候都沒有尾部.h字尾。如下例:

#include <iostream>
using namespace std;
int main() {
	cout << "Hello, World!" << endl;
	return 0;
}

程式中使用了<iostream>中的識別符號cout和endl,因此需要包含<iostream>標頭檔案。
另外,C++標準庫中的所有的識別符號都定義在std名稱空間中,因此需要通過using namespace std來宣告名稱空間std。關於名稱空間的介紹可移步C++之名稱空間

總結
(1) C++與C語言中標頭檔案形式的區別在於,C語言中標頭檔案有.h字尾,而C++沒有。
(2) C++仍然相容C語言中的標頭檔案,雖然這不是推薦的方式。
(3) C++提供C語言中標頭檔案的C++表現形式,如<cstdio>對應<stdio.h>。
(4) C++提供很多C語言中沒有的標頭檔案,如<algorithm>、<numeric>等。(更多詳細資訊可移步C++之標準函式庫