名稱空間
變體
操作

一致性

來自 cppreference.com
< c‎ | 語言

一致性具有三重定義

  • 嚴格一致程式 - 僅使用定義良好的語言結構,即具有單一行為的結構。它不包括未指明、未定義或實現定義的行為,並且不超過任何最小實現限制。
  • 一致程式 - 可被一致實現接受。
  • 一致實現 -
    • 一致的宿主實現應接受任何嚴格一致程式。
    • 一致的獨立實現應接受任何嚴格一致程式,其中庫子句(子句 7)中指定特性的使用僅限於獨立標準庫標頭檔案(見下文)的內容。
    • 一致實現可以有擴充套件(包括額外的庫函式),前提是它們不改變任何嚴格一致程式的行為。

目錄

[編輯] 解釋

標準沒有定義翻譯單元的任何最小實現限制。宿主環境具有作業系統;獨立環境則沒有。在宿主環境中執行的程式可以使用庫子句(子句 7)中描述的所有特性;在獨立環境中執行的程式可以使用子句 4 要求的庫特性子集。

[編輯] 獨立標準庫標頭檔案

獨立實現必須提供所有完全獨立標頭檔案中的所有標準庫特性。

某些標準庫標頭檔案是有條件獨立的。

  • 如果實現預定義了宏 __STDC_IEC_60559_BFP____STDC_IEC_60559_DFP__,則 <math.h><fenv.h> 是完全獨立標頭檔案。然而,只有在程式不將 FENV_ACCESS 編譯指示的狀態設定為 ON 的情況下,這些標頭檔案中的函式的行為才要求在獨立環境中定義良好。

某些標準庫標頭檔案是部分獨立的。

  • <stdlib.h> 中,memalignment 是獨立的。此外,當預定義 __STDC_IEC_60559_BFP____STDC_IEC_60559_DFP__ 時,數字轉換函式(atoXstrtoXstrfromX)也是獨立的,但只有在程式不將 FENV_ACCESS 編譯指示的狀態設定為 ON 的情況下,它們的行為才要求在獨立環境中定義良好。獨立實現不需要提供 <stdlib.h> 中的任何其他元件。
  • <string.h> 中,strdupstrndupstrcollstrxfrmstrtokstrerror 不需要由獨立實現提供。
(自 C23 起)
完全獨立標準庫標頭檔案
<float.h> 浮點型別限制
<iso646.h> (C95 起) 備用運算子拼寫
<limits.h> 整數類型範圍
<stdalign.h> (C11 起) alignasalignof 便利宏
<stdarg.h> 可變引數
<stdbool.h> (C99 起) 布林型別宏
<stddef.h> 通用宏定義
<stdint.h> (C99 起) 固定寬度整數型別
<stdnoreturn.h> (C11 起) noreturn 便利宏
<stdbit.h> (C23 起) 處理型別位元組和位表示的宏
有條件完全獨立標準庫標頭檔案
<fenv.h> (C23 起) 浮點環境
<math.h> (C23 起) 通用數學函式
部分獨立標準庫標頭檔案
<stdlib.h> (C23 起) 通用工具:記憶體管理程式工具字串轉換隨機數演算法
<string.h> (C23 起) 字串處理

[編輯] 參考

  • C23 標準 (ISO/IEC 9899:2024)
  • 4 一致性 (p: 9-10)
  • C17 標準 (ISO/IEC 9899:2018)
  • 4 一致性 (p: 4)
  • C11 標準 (ISO/IEC 9899:2011)
  • 4 一致性 (p: 8-9)
  • C99 標準 (ISO/IEC 9899:1999)
  • 4 一致性 (p: 7-8)
  • C89/C90 標準 (ISO/IEC 9899:1990)
  • 1.7 符合性

[編輯] 另見

C++ 文件 關於 獨立與宿主實現