C++之標頭檔案的變化
C中的標頭檔案
在C語言中,當用到標準輸入輸出時(實際上大多數情況都需要用到),需要包含標頭檔案<stdio.h>;當用到字元陣列相關操作時,需要包含標頭檔案<string.h>;當需要用到數學函式相關操作時,需要包含標頭檔案<math.h>等等。例如:
#include <stdio.h>
int main(void){
printf("Hello World!");
return 0;
}
在上面的例子中,為了使用printf(),需要包含<stdio.h>標頭檔案。這個檔案的主要內容是有關標準輸入輸出的巨集定義
#include <stdio.h>的作用是將<stdio.h>檔案中的內容全部插入到當前檔案中,於是我們就可以使用<stdio.h>所定義的相關內容了。
注意:將<stdio.h>中內容插入到該檔案中這一操作在預處理時進行。有關C語言編譯過程的描述可移步C語言編譯過程。
C++中的標頭檔案
在C++程式中,為了相容性,我們也可以使用<stdio.h>。但這並不是C++的推薦寫法,C++中推薦的標頭檔案是<cstdio>
#include <cstdio>
int main() {
printf("Hello world!");
return 0;
}
因此,如果需要在C++程式中繼續使用C語言的一些函式,更推薦的方法應該是在以前的標頭檔案前加上c,而不是繼續使用之前的.h檔案。
當然,C++也有其特有的標頭檔案,如提供輸入輸出流的<iostream>、提供一些常用演算法的<algorithm>、提供數值操作的<numeric>等。C++為了與C語言中的標頭檔案進行區分
#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++之標準函式庫)