2.1 How References Are Used
The documents listed in this clause are referred to in a way that makes some of their content a requirement of this specification. Only the parts a clause actually cites become requirements. Citing ISO/IEC 9899:1999 for the shape of the declarator grammar does not import its behavioral model, and citing IEC 60559 for floating-point arithmetic does not import an obligation to support every optional feature of that standard.
For dated references, the edition cited applies. For undated references, the latest edition applies, including amendments.
2.2 Governing Design Documents
These two documents are normative for design intent. Every rule in this specification is answerable to them.
../syntax.md C, Ocean Edition I: A Semantic Normalization of C. Design white paper. Establishes the central principle, the design goals, the non-goals, the litmus test for proposed changes, and the doctrine.
../behavior.md C, Ocean Edition I: Behavioral Model and Language Semantics. Companion white paper. Establishes the behavioral model component by component and states the ten laws.
2.3 Baseline Standard
ISO/IEC 9899:1999 Information technology. Programming languages. C. The compatibility baseline, and the document this specification derives from. Cited throughout for the shape of constructs Ocean Edition I retains without change, for the library interface, for the declarator model, and for the identification of behaviors this edition normalizes.
Where this specification is silent on a construct ISO/IEC 9899:1999 specifies, that standard supplies the rule, adjusted by the general rules of clause 6. This is the only normative reference with that standing. See clause 1.3.
Cited amendments:
ISO/IEC 9899:1999/Cor.1:2001, Cor.2:2004, Cor.3:2007 Technical corrigenda to the baseline. Corrections that fix drafting errors apply to the corresponding Ocean Edition I text.
2.4 Sources of Selective Adoption
The following are normative only for the specific facilities this specification adopts from them, and only as respecified here. None of them is a baseline, none is tracked, and none supplies a rule for a construct this specification does not mention. The adoption test is in clause 1.4.1 and the catalogue of what has been taken is in annex-g-divergences-from-c99.md clause G.5.
ISO/IEC 9899:2011 Information technology. Programming languages. C. Cited for max_align_t, for the alignment query facility of clause 7.2.21, for the removal of gets, for quick_exit, and for the spellings recommended to implementations providing thread storage duration, atomics, anonymous members, or static assertions under clause 6.11.5.
ISO/IEC 9899:2018 Information technology. Programming languages. C. Cited for corrections carried forward from the 2011 edition. It introduced no facility this edition adopts on its own account.
ISO/IEC 9899:2024 Information technology. Programming languages. C. Cited for bool, true, and false as core language constructs under clause 6.2.5.2 and clause 6.4.1, for the typed null constant of clause 6.4.4.6 and its type under clause 6.2.5.2, for __has_include under clause 6.10.1, for #warning under clause 6.10.5.1, for the removal of trigraphs and of old-style function definitions, and for the confirmation that two's-complement representation is the only representation worth specifying.
The null constant is adopted in substance rather than in spelling. This edition writes null and NULL where ISO/IEC 9899:2024 writes nullptr, and names the type null_t where that standard names it nullptr_t, providing nullptr_t as an alias. Clause 1.4.2 states that an adopted facility arrives on this edition's terms.
Widespread existing practice Not a published standard. Cited for #pragma once under clause 6.10.2.4, which every serious C implementation provides and no standard has yet required. Where a facility is universal in practice, unspecified in every standard, and passes clause 1.4.1, this edition specifies it rather than waiting.
2.5 Arithmetic
IEC 60559:1989, also published as IEEE 754-1985, and its successor ISO/IEC 60559:2020 Binary floating-point arithmetic for microprocessor systems. Cited by clause 6.2.5 and by annex-f-floating-point.md. An implementation claiming IEC 60559 conformance is bound by the cited standard for the formats, operations, rounding, and exception behavior it claims.
2.6 Character Sets and Text
ISO/IEC 10646 Universal Coded Character Set. Cited by clause 5.2.1 for the character repertoire and for the meaning of universal character names.
RFC 3629 UTF-8, a transformation format of ISO 10646. Cited by clause 5.1.1.2. Ocean Edition I source text is UTF-8. See behavior.md section 4.
Unicode Standard Annex 31 Unicode Identifier and Pattern Syntax. Cited by clause 6.4.2 as the recommended basis for any Unicode identifier characters an implementation chooses to accept beyond the required set.
2.7 Vocabulary
ISO/IEC 2382 Information technology. Vocabulary. Cited by clause 3 for terms this specification uses without redefining.
ISO/IEC Directives, Part 2 Principles and rules for the structure and drafting of ISO and IEC documents. Cited by clause 0.2 for the meaning of the normative verbs. Clause 0.2 restates those meanings so that a reader does not need the Directives in hand.
2.8 References That Are Deliberately Absent
The following are not normative references, and a reader should not assume their content applies.
ISO/IEC 9899:2011 and later editions, taken as a whole
Clause 2.4 cites these standards for specific adopted facilities. Outside those facilities they have no standing. A construct that a later standard specifies and this specification does not mention is not part of Ocean Edition I, and a reader shall not import a rule from a later standard on the grounds that this edition adopted something else from the same document.
In particular, generic selection, atomics, threads, alignment specifiers, variably modified types, constexpr, typeof, attribute syntax, and enumerations with fixed underlying types are not part of this edition. The keyword nullptr is not part of this edition either, although clause 6.4.4.6 adopts what it does. Some appear as recommended extensions under clause 6.11.5, which is a different thing from adoption.
Platform ABI documents
An implementation selects a target ABI, and that ABI determines layout, sizes, alignment, calling convention, and bitfield allocation. The ABI document is authoritative for those properties on that target, and this specification requires only that the implementation name and document the ABI it selected. See clause 5.2.4 and behavior.md section 23.
Any specific compiler's documentation
No implementation's behavior is normative for this edition, including the reference implementation.