C++中#include包含頭文件帶 .h 和不帶 .h 的區別? 如 #include <iostream> 和 #include <iostream.h> 包含的東西有哪些不一樣? 以前在寫C++程序的時候只知道使用 #include <iostream> 的時候,使用函數前要用 using namespace std; 導入命名空間,而 #include <iostream.h> 則不用,這個得看C+ +標準化過程爲C++開發者作了哪些有意義的工做。 (1)C++增長了名稱空間概念,藉以將原來聲明在全局空間下的標識符聲明在了 namespace std下。 (2)統一C++各類後綴名,如.h、.hpp、.hxx等。標準化以前的頭文件就是帶後綴名的文 件,標準化後的頭文件就是不帶後綴名的文件。C++ 98 規定用戶應使用新版頭文件,對舊 版本頭文件不在進行強制規範,但大多數編譯器廠商依然提供舊版本頭文件,以求向下兼 容。 也就是說帶 .h 的頭文件是舊標準的,若是想用新的標準的頭文件就不要帶 .h。 另外,爲了和C語言兼容,C++標準化過程當中,原有C語言頭文件標準化後,頭文件名前帶個 c字母,如cstdio、cstring、ctime、ctype等等。這些頭文件均可以在 C:\Program Files\Microsoft Visual Studio 10.0\VC\include 這個目錄下找到(以VC2010爲例)。 也就是說,咱們若是要用C++標準化了的C語言頭文件,就得做以下的轉換 #include <stdio.h> --> #include <cstdio> #include <stdlib.h> --> #include <cstdlib> #include <string.h> --> #include <cstring> #if !defined(__cplusplus) # include <mem.h> #else /* __cplusplus */ # if !defined(__USING_STD_NAMES__) # include <mem.h> # else /* __USING_STD_NAMES__ */ # include <memory.stl> # endif /* __USING_STD_NAMES__ */ #endif /* __cplusplus */ C中 <*.h>表示優先中系統目錄中查找 該頭文件 好比#include <stdio.h> 這是系統中的 "*.h"表示優先從當前目錄中查找 該頭文件 好比#include "head.h" 這是你本身寫的