分享方式:


使用 C++ 程式庫標頭

您可以透過在 include 指示詞中命名標準標頭來包含其內容。

#include <iostream>// include I/O facilities

您可以依任何順序包含標準標頭、包含相同的標準標頭超過一次,或是包含兩個以上定義相同巨集或相同類型的標準標頭。 請勿在宣告中包含標準標頭。 在包含標準標頭之前,請勿定義名稱與關鍵字相同的宏。

C++ 程式庫標頭包含所有它需要定義所需類型的其他 C++ 程式庫標頭。 (一律包含翻譯單元中所需的任何 C++ 程式庫標頭,不過,以免您猜測其實際相依性有誤。標準 C 標頭絕不包含另一個標準標頭。 標準標頭僅宣告或定義此文件中針對它所描述的實體。

程式庫中的每個函式都會在標準標頭中宣告。 不同於標準 C,標準標頭永遠不會提供與遮罩函式宣告並達到相同效果之函式同名的遮罩巨集。 如需有關遮罩巨集的詳細資訊,請參閱 C++ 程式庫慣例

C++ 程式庫標頭中 operator deleteoperator new 以外的所有名稱,會在 std 命名空間中定義,或是巢狀於 std 命名空間內的命名空間中。 您會參考名稱 cin (例如,std::cin)。 不過請注意,宏名稱不受命名空間限定,因此您一律不需撰寫 __STD_COMPLEX 命名空間限定詞。

在部分轉譯環境中,包含 C++ 程式庫標頭可能也會將 std 命名空間中宣告的外部名稱帶入全域命名空間,並包含每個名稱的個別 using 宣告。 否則,標頭不會* 將任何程式庫名稱引入目前的命名空間。

C++ 標準需要 C 標準標頭在命名空間 std 中宣告所有外部名稱,然後將這些外部名稱帶入全域命名空間,並包含每個名稱的個別 using 宣告。 但是在部分轉譯環境中,C 標準標頭不會包含命名空間宣告,並會直接在全域命名空間中宣告所有名稱。 因此,處理命名空間最方便的方式是遵循兩個規則︰

  • 若要在命名空間 std 中放心宣告傳統上在 中 <stdlib.h> 宣告的外部名稱,例如,請包含 標頭 <cstdlib> 。 請了解該名稱也可能在全域命名空間中宣告。

  • 若要保證在全域命名空間中宣告外部名稱, <stdlib.h> 請直接包含 標頭 <stdlib.h> 。 請了解該名稱也可能在命名空間 std 中宣告。

因此,如果您想要呼叫 std::abort 來造成異常終止,您應該包含 <cstdlib> 。 如果您想要呼叫 abort ,您應該包含 <stdlib.h>

或者,您可以撰寫宣告︰

using namespace std;

這會將所有程式庫名稱帶入目前的命名空間。 如果您在所有 include 指示詞之後立即撰寫這個宣告,您會將名稱帶入全域命名空間名稱中。 接下來,您可以忽略轉譯單位其餘部分中的命名空間考量。 您也會避免大多數跨不同轉譯環境的差異。

除非特別指出,否則您不能定義程式內 std 命名空間中,或是巢狀於 std 命名空間內之命名空間中的名稱。

另請參閱

C++ 標準程式庫概觀
C++ 標準程式庫中的執行緒安全