C0X: searching and table of contents

The ISO C Committee is working toward producing an update to the current C Standard (commonly known as C0X and C99 respectively). The starting point for this update is WG14/N1124. This document contains the wording in the existing standard as modified by the responses to various defect reports, plus typo corrections.

This web site contains a modified version of N1124. It includes wording that has been deleted from C99 (i.e., in struck through form) and wording that does not appear in C99 (i.e., in underlined form). For reasons too complicated to give here it also includes the response to DR #251.

Each C sentence is numbered. These numbers correspond to those appearing in the book "The New C Standard" (the C Standard does not number its sentences).

Note: Your browser may render some text in a different visual form compared to what it appears like in the pdf documents.

A Firefox plugin is also available.

Google
WWW c0x.shape-of-code.com
 Introduction 0
 1. Scope 1
 2. Normative references 18
 3. Terms, definitions, and symbols 30
 3.1 35
 3.2 39
 3.3 40
 3.4 41
 3.4.1 42
 3.4.2 44
 3.4.3 46
 3.4.4 49
 3.5 51
 3.6 53
 3.7 58
 3.7.1 59
 3.7.2 60
 3.7.3 62
 3.8 63
 3.9 64
 3.10 65
 3.11 66
 3.12 67
 3.13 68
 3.14 69
 3.15 71
 3.16 72
 3.17 73
 3.17.1 74
 3.17.2 75
 3.17.3 76
 3.18 78
 3.19 80
 4. Conformance 82
 5. Environment 104
 5.1 Conceptual models 107
 5.1.1 Translation environment 107
 5.1.1.1 Program structure 107
 5.1.1.2 Translation phases 115
 5.1.1.3 Diagnostics 144
 5.1.2 Execution environments 147
 5.1.2.1 Freestanding environment 153
 5.1.2.2 Hosted environment 156
 5.1.2.2.1 Program startup 160
 5.1.2.2.2 Program execution 176
 5.1.2.2.3 Program termination 178
 5.1.2.3 Program execution 182
 5.2 Environmental considerations 212
 5.2.1 Character sets 212
 5.2.1.1 Trigraph sequences 230
 5.2.1.2 Multibyte characters 235
 5.2.2 Character display semantics 249
 5.2.3 Signals and interrupts 267
 5.2.4 Environmental limits 270
 5.2.4.1 Translation limits 273
 5.2.4.2 Numerical limits 297
 5.2.4.2.1 Sizes of integer types  300
 5.2.4.2.2 Characteristics of floating types  327
 6. Language 381
 6.1 Notation 381
 6.2 Concepts 387
 6.2.1 Scopes of identifiers 387
 6.2.2 Linkages of identifiers 417
 6.2.3 Name spaces of identifiers 435
 6.2.4 Storage durations of objects 445
 6.2.5 Types 469
 6.2.6 Representations of types 565
 6.2.6.1 General 565
 6.2.6.2 Integer types 589
 6.2.7 Compatible type and composite type 627
 6.3 Conversions 649
 6.3.1 Arithmetic operands 655
 6.3.1.1 Boolean, characters, and integers 655
 6.3.1.2 Boolean type 676
 6.3.1.3 Signed and unsigned integers 678
 6.3.1.4 Real floating and integer 682
 6.3.1.5 Real floating types 691
 6.3.1.6 Complex types 695
 6.3.1.7 Real and complex 696
 6.3.1.8 Usual arithmetic conversions 698
 6.3.2 Other operands 717
 6.3.2.1 Lvalues, arrays, and function designators 717
 6.3.2.2 void 736
 6.3.2.3 Pointers 739
 6.4 Lexical elements 766
 6.4.1 Keywords 783
 6.4.2 Identifiers 787
 6.4.2.1 General 787
 6.4.2.2 Predefined identifiers 805
 6.4.3 Universal character names 810
 6.4.4 Constants 817
 6.4.4.1 Integer constants 820
 6.4.4.2 Floating constants 836
 6.4.4.3 Enumeration constants 857
 6.4.4.4 Character constants 860
 6.4.5 String literals 889
 6.4.6 Punctuators 906
 6.4.7 Header names 912
 6.4.8 Preprocessing numbers 921
 6.4.9 Comments 927
 6.5 Expressions 933
 6.5.1 Primary expressions 967
 6.5.2 Postfix operators 977
 6.5.2.1 Array subscripting 979
 6.5.2.2 Function calls 989
 6.5.2.3 Structure and union members 1021
 6.5.2.4 Postfix increment and decrement operators 1036
 6.5.2.5 Compound literals 1044
 6.5.3 Unary operators 1070
 6.5.3.1 Prefix increment and decrement operators 1071
 6.5.3.2 Address and indirection operators 1078
 6.5.3.3 Unary arithmetic operators 1091
 6.5.3.4 The sizeof operator 1108
 6.5.4 Cast operators 1123
 6.5.5 Multiplicative operators 1133
 6.5.6 Additive operators 1143
 6.5.7 Bitwise shift operators 1171
 6.5.8 Relational operators 1187
 6.5.9 Equality operators 1202
 6.5.10 Bitwise AND operator 1224
 6.5.11 Bitwise exclusive OR operator 1230
 6.5.12 Bitwise inclusive OR operator 1234
 6.5.13 Logical AND operator 1238
 6.5.14 Logical OR operator 1246
 6.5.15 Conditional operator 1254
 6.5.16 Assignment operators 1278
 6.5.16.1 Simple assignment 1286
 6.5.16.2 Compound assignment 1300
 6.5.17 Comma operator 1303
 6.6 Constant expressions 1312
 6.7 Declarations 1338
 6.7.1 Storage-class specifiers 1354
 6.7.2 Type specifiers 1368
 6.7.2.1 Structure and union specifiers 1380
 6.7.2.2 Enumeration specifiers 1429
 6.7.2.3 Tags 1444
 6.7.3 Type qualifiers 1466
 6.7.3.1 Formal definition of restrict 1492
 6.7.4 Function specifiers 1512
 6.7.5 Declarators 1537
 6.7.5.1 Pointer declarators 1549
 6.7.5.2 Array declarators 1553
 6.7.5.3 Function declarators (including prototypes) 1581
 6.7.6 Type names 1613
 6.7.7 Type definitions 1618
 6.7.8 Initialization 1630
 6.8 Statements and blocks 1696
 6.8.1 Labeled statements 1711
 6.8.2 Compound statement 1718
 6.8.3 Expression and null statements 1720
 6.8.4 Selection statements 1728
 6.8.4.1 The if statement 1732
 6.8.4.2 The switch statement 1737
 6.8.5 Iteration statements 1752
 6.8.5.1 The while statement 1758
 6.8.5.2 The do statement 1759
 6.8.5.3 The for statement 1760
 6.8.6 Jump statements 1768
 6.8.6.1 The goto statement 1773
 6.8.6.2 The continue statement 1778
 6.8.6.3 The break statement 1782
 6.8.6.4 The return statement 1785
 6.9 External definitions 1794
 6.9.1 Function definitions 1805
 6.9.2 External object definitions 1832
 6.10 Preprocessing directives 1838
 6.10.1 Conditional inclusion 1851
 6.10.2 Source file inclusion 1877
 6.10.3 Macro replacement 1899
 6.10.3.1 Argument substitution 1925
 6.10.3.2 The # operator 1930
 6.10.3.3 The ## operator 1938
 6.10.3.4 Rescanning and further replacement 1948
 6.10.3.5 Scope of macro definitions 1954
 6.10.4 Line control 1965
 6.10.5 Error directive 1973
 6.10.6 Pragma directive 1974
 6.10.7 Null directive 1983
 6.10.8 Predefined macro names 1984
 6.10.9 Pragma operator 2009
 6.11 Future language directions 2013
 6.11.1 Floating types 2013
 6.11.2 Linkages of identifiers 2014
 6.11.3 External names 2015
 6.11.4 Character escape sequences 2016
 6.11.5 Storage-class specifiers 2018
 6.11.6 Function declarators 2019
 6.11.7 Function definitions 2020
 6.11.8 Pragma directives 2021
 6.11.9 Predefined macro names 2022
 7. Library 2023

Change Log

 5 Aug 2005 Reference to footnote 130 made superscript, changed (deleted) original
            footnote number 102 to 101.
30 Jul 2005 Fixed minor grammatical typos in, and slightly reworded, this introduction.
28 Jun 2005 Fixed change log dates and moved style sheet information to single file.
18 Jun 2005 Fixed a few footnote misnumberings and removed a stray semicolon.
 9 Jun 2005 Initial release.

Next
Last updated . Copyright © 2005 Knowledge Software Ltd. The text from WG14/N1124 is copyright © ISO