約束

約束是所有現有 C 規範中使用的術語(最近的 ISO-IEC 9899-2011)。它們是標準第 6 節中描述的語言的三個部分之一(沿著語法和語義)。

ISO-IEC 9899-2011 將約束定義為:

限制,無論是句法還是語義,通過它來解釋語言元素的闡述

(請注意,就 C 標準而言,執行時約束不是一種約束,並且具有完全不同的規則。)

換句話說,約束描述了語言規則,這將使語法上有效的程式成為非法。在這方面,約束有點像未定義的行為,任何不遵循它們的程式都不是用 C 語言定義的。

另一方面,約束與未定義的行為有很大的不同。即,如果違反約束,則需要在轉換階段(編譯的一部分)期間提供診斷訊息的實現,該訊息可以是警告或可以停止編譯。