C 庫

C 語言庫
C++ 庫包含與 C 語言庫相同的定義,組織在相同的標頭檔案結構中,但有以下區別
  • 每個標頭檔案的名稱與 C 語言版本相同,但帶有一個“c”字首且沒有副檔名。例如,C 語言標頭檔案<stdlib.h>的 C++ 等效檔案是<cstdlib>.
  • 庫的每個元素都在std名稱空間內定義。
然而,為了與 C 相容,傳統的標頭檔案名name.h(如stdlib.h)也提供了相同的定義,但位於全域性名稱空間內。在本參考資料提供的示例中,使用了這個版本,以便示例完全與 C 相容,儘管在 C++ 中其使用已被棄用。

C++ 實現中也存在某些特定的更改
  • wchar_t, char16_t, char32_tbool是 C++ 中的基本型別,因此沒有在它們在 C 中出現的相應標頭檔案中定義。這同樣適用於標頭檔案 <iso646.h> 中的幾個宏,它們在 C++ 中是關鍵字。
  • 以下函式的宣告在其引數的 constness 方面有所變化: strchrstrpbrkstrrchrstrstrmemchr
  • <cstdlib> 中定義的函式 atexitexitabort 在 C++ 中的行為有所增加。
  • 提供了一些函式的過載版本,這些版本使用額外的型別作為引數,但語義相同,例如floatlong double版本的 cmath 標頭檔案中的函式,或long版本的 absdiv

版本說明

C++98 包含了 1990 ISO C 標準及其修正案 #1 (ISO/IEC 9899:1990 和 ISO/IEC 9899:1990/DAM 1) 所描述的 C 庫。

C++11 包含了 1999 ISO C 標準及其技術勘誤 1、2 和 3 (ISO/IEC 9899:1999 和 ISO/IEC 9899:1999/Cor.1,2,3) 所描述的 C 庫,外加 <cuchar> (依據 ISO/IEC 19769:2004)。

2011 ISO C 標準引入的其他內容與 C++ 不相容。

標頭檔案

ISO-C 90 的修正案 1 增加了兩個額外的標頭檔案:<cwchar><cwctype>