From: nsz Date: Thu, 21 Jul 2011 11:45:01 +0000 (+0200) Subject: +contents, +header links, bold forward ref X-Git-Url: http://nsz.repo.hu/git/?p=c-standard;a=commitdiff_plain;h=1f14f5cb499d0c6d6927c643f6b20d8792a31bd9 +contents, +header links, bold forward ref --- diff --git a/ann2html.sh b/ann2html.sh index 7b3bcac..18e4414 100755 --- a/ann2html.sh +++ b/ann2html.sh @@ -17,10 +17,48 @@ BEGIN { /^@sect Contents/ { ss[sid] = ss[sid] "\n" seencontents = 1 + level = 0 +} + +seencontents && !seenfore && /^[^@]/ { + id = $1 + if (id ~ /Annex/) + id = $2 + sub(/\.$/, "", id) + + s = $0 + if (!sub(/ +\. .*/, "", s)) { + getline + sub(/^ */, " ") + s = s $0 + sub(/ +\. .*/, "", s) + } + + if (match(s, /<[a-zA-Z0-9_]*\.h>/)) { + h = substr($0,RSTART,RLENGTH) + if (!(h in header)) + header[h] = id + } + + s = "" s "\n" + + s = "
  • " s + n = split(id, a, /\./) + while (n > level) { + s = "\n" s + level-- + } + ss[sid] = ss[sid] s + next } /^@sect Foreword/ { - ss[sid] = ss[sid] "\n" + while (level--) + ss[sid] = ss[sid] "\n" seenfore = 1 } @@ -51,7 +89,7 @@ BEGIN { getline # todo hX, back to top ss[sid] = sprintf("%s\n", sect, sect, slevel, $0, slevel) - if ($0 ~ /^(Index|Contents)/) + if ($0 == "Index") ss[sid] = ss[sid] "
    \n"
     	next
     }
    @@ -158,7 +196,7 @@ BEGIN {
     		p = p substr(s,1,RSTART-1)
     		m = substr(s,RSTART,RLENGTH)
     		if (m in header)
    -			p = p "" m ""
    +			p = p "" m ""
     		else
     			p = p m
     		s = substr(s,RSTART+RLENGTH)
    @@ -175,11 +213,7 @@ BEGIN {
     		s = substr(s,RSTART+RLENGTH)
     	}
     	s = p s
    -#	if (s ~ /^ *[1-9][0-9]*\) /) {
    -#		sub(/\)/,"",s)
    -#		sub(/[0-9]+/,"&)",s)
    -#	}
    -
    +	sub(/^ *Forward references/, "

    &", s) if (pre) pre = pre "\n" s else if (nn) diff --git a/n1256.html b/n1256.html index b5add74..7c91502 100644 --- a/n1256.html +++ b/n1256.html @@ -6,300 +6,376 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007

    Contents

    -
    -Foreword       . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                   xi
    -Introduction     . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                  xiv
    -1. Scope       . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                    1
    -2. Normative references      . . . . . . . . . . . . . . . . . . . . . . .                                  2
    -3. Terms, definitions, and symbols     . . . . . . . . . . . . . . . . . . .                                 3
    -4. Conformance       . . . . . . . . . . . . . . . . . . . . . . . . . .                                    7
    -5. Environment    . . . . . . . . . . .        . .   .   .   .   .   .   .   .    .   .   .   .   .   .    9
    -   5.1 Conceptual models      . . . . . .      . .   .   .   .   .   .   .   .    .   .   .   .   .   .    9
    -        5.1.1  Translation environment .       . .   .   .   .   .   .   .   .    .   .   .   .   .   .    9
    -        5.1.2  Execution environments     .    . .   .   .   .   .   .   .   .    .   .   .   .   .   .   11
    -   5.2 Environmental considerations    . .     . .   .   .   .   .   .   .   .    .   .   .   .   .   .   17
    -        5.2.1 Character sets     . . . . .     . .   .   .   .   .   .   .   .    .   .   .   .   .   .   17
    -        5.2.2  Character display semantics       .   .   .   .   .   .   .   .    .   .   .   .   .   .   19
    -        5.2.3 Signals and interrupts . .       . .   .   .   .   .   .   .   .    .   .   .   .   .   .   20
    -        5.2.4  Environmental limits    . .     . .   .   .   .   .   .   .   .    .   .   .   .   .   .   20
    -6. Language . . . . . . . . . . . . . . . .              .   .   .   .   .   .    .   .   .   .   .   .   29
    -   6.1 Notation . . . . . . . . . . . . . .              .   .   .   .   .   .    .   .   .   .   .   .   29
    -   6.2 Concepts      . . . . . . . . . . . . .           .   .   .   .   .   .    .   .   .   .   .   .   29
    -        6.2.1 Scopes of identifiers      . . . . .        .   .   .   .   .   .    .   .   .   .   .   .   29
    -        6.2.2   Linkages of identifiers . . . . .         .   .   .   .   .   .    .   .   .   .   .   .   30
    -        6.2.3 Name spaces of identifiers      . . .       .   .   .   .   .   .    .   .   .   .   .   .   31
    -        6.2.4 Storage durations of objects     . .       .   .   .   .   .   .    .   .   .   .   .   .   32
    -        6.2.5 Types       . . . . . . . . . . .          .   .   .   .   .   .    .   .   .   .   .   .   33
    -        6.2.6 Representations of types . . . .           .   .   .   .   .   .    .   .   .   .   .   .   37
    -        6.2.7 Compatible type and composite type             .   .   .   .   .    .   .   .   .   .   .   40
    -   6.3 Conversions     . . . . . . . . . . . .           .   .   .   .   .   .    .   .   .   .   .   .   42
    -        6.3.1 Arithmetic operands       . . . . .        .   .   .   .   .   .    .   .   .   .   .   .   42
    -        6.3.2 Other operands        . . . . . . .        .   .   .   .   .   .    .   .   .   .   .   .   46
    -   6.4 Lexical elements      . . . . . . . . . .         .   .   .   .   .   .    .   .   .   .   .   .   49
    -        6.4.1 Keywords . . . . . . . . . .               .   .   .   .   .   .    .   .   .   .   .   .   50
    -        6.4.2 Identifiers . . . . . . . . . .             .   .   .   .   .   .    .   .   .   .   .   .   51
    -        6.4.3 Universal character names      . . .       .   .   .   .   .   .    .   .   .   .   .   .   53
    -        6.4.4   Constants . . . . . . . . . .            .   .   .   .   .   .    .   .   .   .   .   .   54
    -        6.4.5 String literals     . . . . . . . .        .   .   .   .   .   .    .   .   .   .   .   .   62
    -        6.4.6   Punctuators . . . . . . . . .            .   .   .   .   .   .    .   .   .   .   .   .   63
    -        6.4.7 Header names        . . . . . . . .        .   .   .   .   .   .    .   .   .   .   .   .   64
    -        6.4.8 Preprocessing numbers        . . . .       .   .   .   .   .   .    .   .   .   .   .   .   65
    -        6.4.9 Comments         . . . . . . . . .         .   .   .   .   .   .    .   .   .   .   .   .   66
    -   6.5 Expressions     . . . . . . . . . . . .           .   .   .   .   .   .    .   .   .   .   .   .   67
    +
    +

    Foreword

    @@ -332,21 +408,21 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 amended and corrected by ISO/IEC 9899/COR1:1994, ISO/IEC 9899/AMD1:1995, and ISO/IEC 9899/COR2:1996. Major changes from the previous edition include:

    - Forward references: enumeration specifiers (6.7.2.2), labeled statements (6.8.1), +

    Forward references: enumeration specifiers (6.7.2.2), labeled statements (6.8.1), structure and union specifiers (6.7.2.1), structure and union members (6.5.2.3), tags (6.7.2.3), the goto statement (6.8.6.1). @@ -1933,7 +2009,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 the declaration of the object until execution of the program leaves the scope of the declaration.27) If the scope is entered recursively, a new instance of the object is created each time. The initial value of the object is indeterminate. - Forward references: statements (6.8), function calls (6.5.2.2), declarators (6.7.5), array +

    Forward references: statements (6.8), function calls (6.5.2.2), declarators (6.7.5), array declarators (6.7.5.2), initialization (6.7.8). @@ -1978,7 +2054,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 An object declared as type signed char occupies the same amount of storage as a ''plain'' char object. A ''plain'' int object has the natural size suggested by the architecture of the execution environment (large enough to contain any value in the range - INT_MIN to INT_MAX as defined in the header <limits.h>). + INT_MIN to INT_MAX as defined in the header <limits.h>).

    For each of the signed integer types, there is a corresponding (but different) unsigned integer type (designated with the keyword unsigned) that uses the same amount of @@ -2130,7 +2206,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 function returning struct tag''. The array has length five and the function has a single parameter of type float. Its type category is array. - Forward references: compatible type and composite type (6.2.7), declarations (6.7). +

    Forward references: compatible type and composite type (6.2.7), declarations (6.7).

    footnotes

    28) Implementation-defined keywords shall have the form of an identifier reserved for any use as @@ -2154,7 +2230,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Implementation-defined keywords shall have the form of an identifier reserved for any use as described in 7.1.3. -

    35) CHAR_MIN, defined in <limits.h>, will have one of the values 0 or SCHAR_MIN, and this can be +

    35) CHAR_MIN, defined in <limits.h>, will have one of the values 0 or SCHAR_MIN, and this can be used to distinguish the two options. Irrespective of the choice made, char is a separate type from the other two and is not compatible with either. @@ -2215,7 +2291,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 value is stored in an object using a type that has more than one object representation for that value, it is unspecified which representation is used, but a trap representation shall not be generated. - Forward references: declarations (6.7), expressions (6.5), lvalues, arrays, and function +

    Forward references: declarations (6.7), expressions (6.5), lvalues, arrays, and function designators (6.3.2.1).

    footnotes
    @@ -2378,7 +2454,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Conversion of an operand value to a compatible type causes no change to the value or the representation. - Forward references: cast operators (6.5.4). +

    Forward references: cast operators (6.5.4).

    6.3.1 Arithmetic operands

    @@ -2422,7 +2498,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    The integer promotions preserve value including sign. As discussed earlier, whether a ''plain'' char is treated as signed is implementation-defined. - Forward references: enumeration specifiers (6.7.2.2), structure and union specifiers +

    Forward references: enumeration specifiers (6.7.2.2), structure and union specifiers (6.7.2.1).

    footnotes
    @@ -2587,8 +2663,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 operand of the sizeof operator54) or the unary & operator, a function designator with type ''function returning type'' is converted to an expression that has type ''pointer to function returning type''. - Forward references: address and indirection operators (6.5.3.2), assignment operators - (6.5.16), common definitions <stddef.h> (7.17), initialization (6.7.8), postfix +

    Forward references: address and indirection operators (6.5.3.2), assignment operators + (6.5.16), common definitions <stddef.h> (7.17), initialization (6.7.8), postfix increment and decrement operators (6.5.2.4), prefix increment and decrement operators (6.5.3.1), the sizeof operator (6.5.3.4), structure and union members (6.5.2.3). @@ -2657,12 +2733,12 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 type and back again; the result shall compare equal to the original pointer. If a converted pointer is used to call a function whose type is not compatible with the pointed-to type, the behavior is undefined. - Forward references: cast operators (6.5.4), equality operators (6.5.9), integer types +

    Forward references: cast operators (6.5.4), equality operators (6.5.9), integer types capable of holding object pointers (7.18.1.4), simple assignment (6.5.16.1).

    footnotes
    -

    55) The macro NULL is defined in <stddef.h> (and other headers) as a null pointer constant; see 7.17. +

    55) The macro NULL is defined in <stddef.h> (and other headers) as a null pointer constant; see 7.17.

    56) The mapping functions for converting a pointer to an integer or an integer to a pointer are intended to be consistent with the addressing structure of the execution environment. @@ -2733,7 +2809,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 EXAMPLE 2 The program fragment x+++++y is parsed as x ++ ++ + y, which violates a constraint on increment operators, even though the parse x ++ + ++ y might yield a correct expression. - Forward references: character constants (6.4.4.4), comments (6.4.9), expressions (6.5), +

    Forward references: character constants (6.4.4.4), comments (6.4.9), expressions (6.5), floating constants (6.4.4.2), header names (6.4.7), macro replacement (6.10.3), postfix increment and decrement operators (6.5.2.4), prefix increment and decrement operators (6.5.3.1), preprocessing directives (6.10), preprocessing numbers (6.4.8), string literals @@ -2824,7 +2900,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Any identifiers that differ in a significant character are different identifiers. If two identifiers differ only in nonsignificant characters, the behavior is undefined. - Forward references: universal character names (6.4.3), macro replacement (6.10.3). +

    Forward references: universal character names (6.4.3), macro replacement (6.10.3).

    footnotes

    60) On systems in which linkers cannot accept extended characters, an encoding of the universal character @@ -2848,7 +2924,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    EXAMPLE Consider the code fragment:

    -          #include <stdio.h>
    +          #include <stdio.h>
               void myfunc(void)
               {
                     printf("%s\n", __func__);
    @@ -2858,7 +2934,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
               myfunc
    - Forward references: function definitions (6.9.1). +

    Forward references: function definitions (6.9.1). @@ -3122,7 +3198,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Semantics

    An identifier declared as an enumeration constant has type int. - Forward references: enumeration specifiers (6.7.2.2). +

    Forward references: enumeration specifiers (6.7.2.2).

    6.4.4.4 Character constants
    Syntax
    @@ -3218,7 +3294,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 type int.

    A wide character constant has type wchar_t, an integer type defined in the - <stddef.h> header. The value of a wide character constant containing a single + <stddef.h> header. The value of a wide character constant containing a single multibyte character that maps to a member of the extended execution character set is the wide character corresponding to that multibyte character, as defined by the mbtowc function, with an implementation-defined current locale. The value of a wide character @@ -3247,7 +3323,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 L'\1234' specifies the implementation-defined value that results from the combination of the values 0123 and '4'. - Forward references: common definitions <stddef.h> (7.17), the mbtowc function +

    Forward references: common definitions <stddef.h> (7.17), the mbtowc function (7.20.7.2). @@ -3313,7 +3389,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 because escape sequences are converted into single members of the execution character set just prior to adjacent string literal concatenation. - Forward references: common definitions <stddef.h> (7.17), the mbstowcs +

    Forward references: common definitions <stddef.h> (7.17), the mbstowcs function (7.20.8.1).

    footnotes
    @@ -3349,7 +3425,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
               [     ]       {     }      #      ##
    except for their spelling.68) - Forward references: expressions (6.5), declarations (6.7), preprocessing directives +

    Forward references: expressions (6.5), declarations (6.7), preprocessing directives (6.10), statements (6.8).

    footnotes
    @@ -3406,7 +3482,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 {#}{include} {<1/a.h>} {#}{define} {const}{.}{member}{@}{$}
    - Forward references: source file inclusion (6.10.2). +

    Forward references: source file inclusion (6.10.2).

    footnotes

    69) Thus, sequences of characters that resemble escape sequences cause undefined behavior. @@ -3533,10 +3609,10 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    A floating expression may be contracted, that is, evaluated as though it were an atomic operation, thereby omitting rounding errors implied by the source code and the - expression evaluation method.77) The FP_CONTRACT pragma in <math.h> provides a + expression evaluation method.77) The FP_CONTRACT pragma in <math.h> provides a way to disallow contracted expressions. Otherwise, whether and how expressions are contracted is implementation-defined.78) - Forward references: the FP_CONTRACT pragma (7.12.2), copying functions (7.21.2). +

    Forward references: the FP_CONTRACT pragma (7.12.2), copying functions (7.21.2). @@ -3604,7 +3680,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 those of the unparenthesized expression. It is an lvalue, a function designator, or a void expression if the unparenthesized expression is, respectively, an lvalue, a function designator, or a void expression. - Forward references: declarations (6.7). +

    Forward references: declarations (6.7).

    footnotes

    79) Thus, an undeclared identifier is a violation of the syntax. @@ -3667,7 +3743,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 expression x[i][j], that array is in turn converted to a pointer to the first of the ints, so x[i][j] yields an int. - Forward references: additive operators (6.5.6), address and indirection operators +

    Forward references: additive operators (6.5.6), address and indirection operators (6.5.3.2), array declarators (6.7.5.2). @@ -3747,7 +3823,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 the functions f1, f2, f3, and f4 may be called in any order. All side effects have to be completed before the function pointed to by pf[f1()] is called. - Forward references: function declarators (including prototypes) (6.7.5.3), function +

    Forward references: function declarators (including prototypes) (6.7.5.3), function definitions (6.9.1), the return statement (6.8.6.4), simple assignment (6.5.16.1).

    footnotes
    @@ -3855,7 +3931,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 return f(&u.s1, &u.s2); } - Forward references: address and indirection operators (6.5.3.2), structure and union +

    Forward references: address and indirection operators (6.5.3.2), structure and union specifiers (6.7.2.1). @@ -3886,7 +3962,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 The postfix -- operator is analogous to the postfix ++ operator, except that the value of the operand is decremented (that is, the value 1 of the appropriate type is subtracted from it). - Forward references: additive operators (6.5.6), compound assignment (6.5.16.2). +

    Forward references: additive operators (6.5.6), compound assignment (6.5.16.2).

    6.5.2.5 Compound literals
    Constraints
    @@ -4011,7 +4087,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 lifetime of the unnamed object would be the body of the loop only, and on entry next time around p would have an indeterminate value, which would result in undefined behavior. - Forward references: type names (6.7.6), initialization (6.7.8). +

    Forward references: type names (6.7.6), initialization (6.7.8).

    footnotes
    @@ -4052,7 +4128,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    The prefix -- operator is analogous to the prefix ++ operator, except that the value of the operand is decremented. - Forward references: additive operators (6.5.6), compound assignment (6.5.16.2). +

    Forward references: additive operators (6.5.6), compound assignment (6.5.16.2).

    6.5.3.2 Address and indirection operators
    Constraints
    @@ -4079,7 +4155,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 object. If the operand has type ''pointer to type'', the result has type ''type''. If an invalid value has been assigned to the pointer, the behavior of the unary * operator is undefined.87) - Forward references: storage-class specifiers (6.7.1), structure and union specifiers +

    Forward references: storage-class specifiers (6.7.1), structure and union specifiers (6.7.2.1).

    footnotes
    @@ -4141,7 +4217,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 including internal and trailing padding.

    The value of the result is implementation-defined, and its type (an unsigned integer type) - is size_t, defined in <stddef.h> (and other headers). + is size_t, defined in <stddef.h> (and other headers).

    EXAMPLE 1 A principal use of the sizeof operator is in communication with routines such as storage allocators and I/O systems. A storage-allocation function might accept a size (in bytes) of an object to @@ -4161,7 +4237,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 EXAMPLE 3 In this example, the size of a variable length array is computed and returned from a function:

    -         #include <stddef.h>
    +         #include <stddef.h>
              size_t fsize3(int n)
              {
                    char b[n+3];                  // variable length array
    @@ -4179,7 +4255,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
                     return 0;
               }
    - Forward references: common definitions <stddef.h> (7.17), declarations (6.7), +

    Forward references: common definitions <stddef.h> (7.17), declarations (6.7), structure and union specifiers (6.7.2.1), type names (6.7.6), array declarators (6.7.5.2).

    footnotes
    @@ -4210,7 +4286,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 If the value of the expression is represented with greater precision or range than required by the type named by the cast (6.3.1.8), then the cast specifies a conversion even if the type of the expression is the same as the named type. - Forward references: equality operators (6.5.9), function declarators (including +

    Forward references: equality operators (6.5.9), function declarators (including prototypes) (6.7.5.3), simple assignment (6.5.16.1), type names (6.7.6). @@ -4313,7 +4389,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 When two pointers are subtracted, both shall point to elements of the same array object, or one past the last element of the array object; the result is the difference of the subscripts of the two array elements. The size of the result is implementation-defined, - and its type (a signed integer type) is ptrdiff_t defined in the <stddef.h> header. + and its type (a signed integer type) is ptrdiff_t defined in the <stddef.h> header. If the result is not representable in an object of that type, the behavior is undefined. In other words, if the expressions P and Q point to, respectively, the i-th and j-th elements of an array object, the expression (P)-(Q) has the value i-j provided the value fits in an @@ -4340,7 +4416,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 declared to be a pointer to an array of the same known constant size (pointing to a), the results would be the same. - Forward references: array declarators (6.7.5.2), common definitions <stddef.h> +

    Forward references: array declarators (6.7.5.2), common definitions <stddef.h> (7.17).

    footnotes
    @@ -4810,7 +4886,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 f(a, (t=3, t+2), c) the function has three arguments, the second of which has the value 5. - Forward references: initialization (6.7.8). +

    Forward references: initialization (6.7.8). @@ -4885,7 +4961,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    The semantic rules for the evaluation of a constant expression are the same as for nonconstant expressions.100) - Forward references: array declarators (6.7.5.2), initialization (6.7.8). +

    Forward references: array declarators (6.7.5.2), initialization (6.7.8). @@ -4958,7 +5034,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 complete by the end of its declarator, or by the end of its init-declarator if it has an initializer; in the case of function parameters (including in prototypes), it is the adjusted type (see 6.7.5.3) that is required to be complete. - Forward references: declarators (6.7.5), enumeration specifiers (6.7.2.2), initialization +

    Forward references: declarators (6.7.5), enumeration specifiers (6.7.2.2), initialization (6.7.8).

    footnotes
    @@ -5000,7 +5076,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 typedef, the properties resulting from the storage-class specifier, except with respect to linkage, also apply to the members of the object, and so on recursively for any aggregate or union member objects. - Forward references: type definitions (6.7.7). +

    Forward references: type definitions (6.7.7).

    footnotes

    102) See ''future language directions'' (6.11.5). @@ -5077,7 +5153,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Each of the comma-separated sets designates the same type, except that for bit-fields, it is implementation-defined whether the specifier int designates the same type as signed int or the same type as unsigned int. - Forward references: enumeration specifiers (6.7.2.2), structure and union specifiers +

    Forward references: enumeration specifiers (6.7.2.2), structure and union specifiers (6.7.2.1), tags (6.7.2.3), type definitions (6.7.7). @@ -5269,7 +5345,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 only copies the member n; if any of the array elements are within the first sizeof (struct s) bytes of the structure, they might be copied or simply overwritten with indeterminate values. - Forward references: tags (6.7.2.3). +

    Forward references: tags (6.7.2.3).

    footnotes
    @@ -5337,7 +5413,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 makes hue the tag of an enumeration, and then declares col as an object that has that type and cp as a pointer to an object that has that type. The enumerated values are in the set { 0, 1, 20, 21 }. - Forward references: tags (6.7.2.3). +

    Forward references: tags (6.7.2.3).

    footnotes

    109) Thus, the identifiers of enumeration constants declared in the same scope shall all be distinct from @@ -5449,7 +5525,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 may be inserted ahead of D1. This declares a new tag s2 in the inner scope; the declaration D2 then completes the specification of the new type. - Forward references: declarators (6.7.5), array declarators (6.7.5.2), type definitions +

    Forward references: declarators (6.7.5), array declarators (6.7.5.2), type definitions (6.7.7).

    footnotes
    @@ -5745,7 +5821,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 external definition has to appear in another translation unit (see 6.9); the inline definition and the external definition are distinct and either may be used for the call. - Forward references: function definitions (6.9.1). +

    Forward references: function definitions (6.9.1). @@ -5836,7 +5912,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 As discussed in 5.2.4.1, an implementation may limit the number of pointer, array, and function declarators that modify an arithmetic, structure, union, or incomplete type, either directly or via one or more typedefs. - Forward references: array declarators (6.7.5.2), type definitions (6.7.7). +

    Forward references: array declarators (6.7.5.2), type definitions (6.7.7).

    6.7.5.1 Pointer declarators
    Semantics
    @@ -5979,7 +6055,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 static int (*q)[m] = &B; // valid: q is a static block pointer to VLA } - Forward references: function declarators (6.7.5.3), function definitions (6.9.1), +

    Forward references: function declarators (6.7.5.3), function definitions (6.9.1), initialization (6.7.8).

    footnotes
    @@ -6138,11 +6214,11 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 (Note that the last declaration also specifies that the argument corresponding to a in any call to f must be a non-null pointer to the first of at least three arrays of 5 doubles, which the others do not.) - Forward references: function definitions (6.9.1), type names (6.7.6). +

    Forward references: function definitions (6.9.1), type names (6.7.6).

    footnotes
    -

    125) The macros defined in the <stdarg.h> header (7.15) may be used to access arguments that +

    125) The macros defined in the <stdarg.h> header (7.15) may be used to access arguments that correspond to the ellipsis.

    126) See ''future language directions'' (6.11.6). @@ -6436,7 +6512,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 The order in which any side effects occur among the initialization list expressions is unspecified.133)

    - EXAMPLE 1 Provided that <complex.h> has been #included, the declarations + EXAMPLE 1 Provided that <complex.h> has been #included, the declarations

               int i = 3.5;
               double complex c = 5 + 3 * I;
    @@ -6594,7 +6670,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
               union { /* ... */ } u = { .any_member = 42 };
    - Forward references: common definitions <stddef.h> (7.17). +

    Forward references: common definitions <stddef.h> (7.17).

    footnotes
    @@ -6643,7 +6719,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 controlling expression of a while or do statement; each of the (optional) expressions of a for statement; the (optional) expression in a return statement. The end of a full expression is a sequence point. - Forward references: expression and null statements (6.8.3), selection statements +

    Forward references: expression and null statements (6.8.3), selection statements (6.8.4), iteration statements (6.8.5), the return statement (6.8.6.4).

    6.8.1 Labeled statements

    @@ -6666,7 +6742,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Any statement may be preceded by a prefix that declares an identifier as a label name. Labels in themselves do not alter the flow of control, which continues unimpeded across them. - Forward references: the goto statement (6.8.6.1), the switch statement (6.8.4.2). +

    Forward references: the goto statement (6.8.6.1), the switch statement (6.8.4.2).

    6.8.2 Compound statement

    Syntax
    @@ -6733,7 +6809,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 end_loop1: ; } - Forward references: iteration statements (6.8.5). +

    Forward references: iteration statements (6.8.5).

    footnotes

    134) Such as assignments, and function calls which have side effects. @@ -7430,7 +7506,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 expression which is evaluated according to the rules of 6.6. For the purposes of this token conversion and evaluation, all signed integer types and all unsigned integer types act as if they have the same representation as, respectively, the types intmax_t and - uintmax_t defined in the header <stdint.h>.145) This includes interpreting + uintmax_t defined in the header <stdint.h>.145) This includes interpreting character constants, which may involve converting escape sequences into execution character set members. Whether the numeric value for these character constants matches the value obtained when an identical character constant occurs in an expression (other @@ -7457,7 +7533,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 processed. If none of the conditions evaluates to true, and there is a #else directive, the group controlled by the #else is processed; lacking a #else directive, all the groups until the #endif are skipped.147) - Forward references: macro replacement (6.10.3), source file inclusion (6.10.2), largest +

    Forward references: macro replacement (6.10.3), source file inclusion (6.10.2), largest integer types (7.18.1.5).

    footnotes
    @@ -7533,7 +7609,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    EXAMPLE 1 The most common uses of #include preprocessing directives are as in the following:

    -          #include <stdio.h>
    +          #include <stdio.h>
               #include "myprog.h"

    @@ -7553,7 +7629,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 #endif #include INCFILE - Forward references: macro replacement (6.10.3). +

    Forward references: macro replacement (6.10.3).

    footnotes

    148) Note that adjacent string literals are not concatenated into a single string literal (see the translation @@ -7965,7 +8041,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 #pragma STDC CX_LIMITED_RANGE on-off-switch on-off-switch: one of ON OFF DEFAULT - Forward references: the FP_CONTRACT pragma (7.12.2), the FENV_ACCESS pragma +

    Forward references: the FP_CONTRACT pragma (7.12.2), the FENV_ACCESS pragma (7.6.1), the CX_LIMITED_RANGE pragma (7.3.4). @@ -8052,7 +8128,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    The implementation shall not predefine the macro __cplusplus, nor shall it define it in any standard header. - Forward references: the asctime function (7.23.3.1), standard headers (7.1.2). +

    Forward references: the asctime function (7.23.3.1), standard headers (7.1.2).

    footnotes

    154) See ''future language directions'' (6.11.9). @@ -8171,7 +8247,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 (potentially) causes a change in shift state (see 5.2.1.2). A shift sequence shall not have a corresponding wide character; it is instead taken to be an adjunct to an adjacent multibyte character.158) - Forward references: character handling (7.4), the setlocale function (7.11.1.1). +

    Forward references: character handling (7.4), the setlocale function (7.11.1.1). @@ -8199,19 +8275,19 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 The standard headers are

    -        <assert.h>             <inttypes.h>            <signal.h>              <stdlib.h>
    -        <complex.h>            <iso646.h>              <stdarg.h>              <string.h>
    -        <ctype.h>              <limits.h>              <stdbool.h>             <tgmath.h>
    -        <errno.h>              <locale.h>              <stddef.h>              <time.h>
    -        <fenv.h>               <math.h>                <stdint.h>              <wchar.h>
    -        <float.h>              <setjmp.h>              <stdio.h>               <wctype.h>
    + <assert.h> <inttypes.h> <signal.h> <stdlib.h> + <complex.h> <iso646.h> <stdarg.h> <string.h> + <ctype.h> <limits.h> <stdbool.h> <tgmath.h> + <errno.h> <locale.h> <stddef.h> <time.h> + <fenv.h> <math.h> <stdint.h> <wchar.h> + <float.h> <setjmp.h> <stdio.h> <wctype.h> If a file with the same name as one of the above < and > delimited sequences, not provided as part of the implementation, is placed in any of the standard places that are searched for included source files, the behavior is undefined.

    Standard headers may be included in any order; each may be included more than once in a given scope, with no effect different from being included only once, except that the - effect of including <assert.h> depends on the definition of NDEBUG (see 7.2). If + effect of including <assert.h> depends on the definition of NDEBUG (see 7.2). If used, a header shall be included outside of any external declaration or definition, and it shall first be included before the first reference to any of the functions or objects it declares, or to any of the types or macros it defines. However, if an identifier is declared @@ -8227,7 +8303,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Any declaration of a library function shall have external linkage.

    A summary of the contents of the standard headers is given in annex B. - Forward references: diagnostics (7.2). +

    Forward references: diagnostics (7.2). @@ -8320,20 +8396,20 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    - Forward references: files (7.19.3), the fseek function (7.19.9.2), streams (7.19.2), the - tmpnam function (7.19.4.4), <wchar.h> (7.24). +

    Forward references: files (7.19.3), the fseek function (7.19.9.2), streams (7.19.2), the + tmpnam function (7.19.4.4), <wchar.h> (7.24).

    footnotes

    231) If the implementation imposes no practical limit on the length of file name strings, the value of @@ -12723,7 +12799,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 An implementation shall support text files with lines containing at least 254 characters, including the terminating new-line character. The value of the macro BUFSIZ shall be at least 256. - Forward references: the freopen function (7.19.5.4), the fwide function (7.24.3.5), +

    Forward references: the freopen function (7.19.5.4), the fwide function (7.24.3.5), mbstate_t (7.25.1), the fgetpos function (7.19.9.1), the fsetpos function (7.19.9.3). @@ -12840,7 +12916,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    The value of FOPEN_MAX shall be at least eight, including the three standard text streams. - Forward references: the exit function (7.20.4.3), the fgetc function (7.19.7.1), the +

    Forward references: the exit function (7.20.4.3), the fgetc function (7.19.7.1), the fopen function (7.19.5.3), the fputc function (7.19.7.3), the setbuf function (7.19.5.5), the setvbuf function (7.19.5.6), the fgetwc function (7.24.3.1), the fputwc function (7.24.3.3), conversion state (7.24.6), the mbrtowc function @@ -12858,7 +12934,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int remove(const char *filename);
    Description

    @@ -12874,7 +12950,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int rename(const char *old, const char *new);
    Description

    @@ -12897,7 +12973,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              FILE *tmpfile(void);
    Description

    @@ -12915,13 +12991,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    The tmpfile function returns a pointer to the stream of the file that it created. If the file cannot be created, the tmpfile function returns a null pointer. - Forward references: the fopen function (7.19.5.3). +

    Forward references: the fopen function (7.19.5.3).

    7.19.4.4 The tmpnam function
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              char *tmpnam(char *s);
    Description

    @@ -12961,7 +13037,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int fclose(FILE *stream);
    Description

    @@ -12981,7 +13057,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    -        #include <stdio.h>
    +        #include <stdio.h>
             int fflush(FILE *stream);
    Description

    @@ -12996,13 +13072,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    The fflush function sets the error indicator for the stream and returns EOF if a write error occurs, otherwise it returns zero. - Forward references: the fopen function (7.19.5.3). +

    Forward references: the fopen function (7.19.5.3).

    7.19.5.3 The fopen function
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              FILE *fopen(const char * restrict filename,
                   const char * restrict mode);
    Description
    @@ -13055,7 +13131,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    The fopen function returns a pointer to the object controlling the stream. If the open operation fails, fopen returns a null pointer. - Forward references: file positioning functions (7.19.9). +

    Forward references: file positioning functions (7.19.9).

    footnotes

    237) If the string begins with one of the above sequences, the implementation might choose to ignore the @@ -13067,7 +13143,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             FILE *freopen(const char * restrict filename,
                  const char * restrict mode,
                  FILE * restrict stream);
    @@ -13101,7 +13177,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              void setbuf(FILE * restrict stream,
                   char * restrict buf);
    Description
    @@ -13112,13 +13188,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Returns

    The setbuf function returns no value. - Forward references: the setvbuf function (7.19.5.6). +

    Forward references: the setvbuf function (7.19.5.6).

    7.19.5.6 The setvbuf function
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int setvbuf(FILE * restrict stream,
                   char * restrict buf,
                   int mode, size_t size);
    @@ -13162,7 +13238,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int fprintf(FILE * restrict stream,
                   const char * restrict format, ...);
    Description
    @@ -13466,8 +13542,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 EXAMPLE 1 To print a date and time in the form ''Sunday, July 3, 10:02'' followed by pi to five decimal places:
    -         #include <math.h>
    -         #include <stdio.h>
    +         #include <math.h>
    +         #include <stdio.h>
              /* ... */
              char *weekday, *month;      // pointers to strings
              int day, hour, min;
    @@ -13507,7 +13583,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
               |      abc Z W|
               |            Z|
    - Forward references: conversion state (7.24.6), the wcrtomb function (7.24.6.3.3). +

    Forward references: conversion state (7.24.6), the wcrtomb function (7.24.6.3.3).

    footnotes

    241) Note that 0 is taken as a flag, not as the beginning of a field width. @@ -13541,7 +13617,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -          #include <stdio.h>
    +          #include <stdio.h>
               int fscanf(FILE * restrict stream,
                    const char * restrict format, ...);
    Description
    @@ -13770,7 +13846,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    EXAMPLE 1 The call:

    -          #include <stdio.h>
    +          #include <stdio.h>
               /* ... */
               int n, i; float x; char name[50];
               n = fscanf(stdin, "%d%f%s", &i, &x, name);
    @@ -13783,7 +13859,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    EXAMPLE 2 The call:

    -          #include <stdio.h>
    +          #include <stdio.h>
               /* ... */
               int i; float x; char name[50];
               fscanf(stdin, "%2d%f%*d %[0123456789]", &i, &x, name);
    @@ -13801,7 +13877,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 EXAMPLE 3 To accept repeatedly from stdin a quantity, a unit of measure, and an item name:

    -          #include <stdio.h>
    +          #include <stdio.h>
               /* ... */
               int count; float quant; char units[21], item[21];
               do {
    @@ -13831,7 +13907,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     

    EXAMPLE 4 In:

    -          #include <stdio.h>
    +          #include <stdio.h>
               /* ... */
               int d1, d2, n1, n2, i;
               i = sscanf("123", "%d%n%n%d", &d1, &n1, &n2, &d2);
    @@ -13848,7 +13924,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 After the call:
    -           #include <stdio.h>
    +           #include <stdio.h>
                /* ... */
                char str[50];
                fscanf(stdin, "a%s", str);
    @@ -13860,8 +13936,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    In contrast, after the call:

    -           #include <stdio.h>
    -           #include <stddef.h>
    +           #include <stdio.h>
    +           #include <stddef.h>
                /* ... */
                wchar_t wstr[50];
                fscanf(stdin, "a%ls", wstr);
    @@ -13870,8 +13946,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    However, the call:

    -           #include <stdio.h>
    -           #include <stddef.h>
    +           #include <stdio.h>
    +           #include <stddef.h>
                /* ... */
                wchar_t wstr[50];
                fscanf(stdin, "a(uparrow) X(downarrow)%ls", wstr);
    @@ -13881,15 +13957,15 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Assuming that the first byte of the multibyte character X is the same as the first byte of the multibyte character Y, after the call:
    -           #include <stdio.h>
    -           #include <stddef.h>
    +           #include <stdio.h>
    +           #include <stddef.h>
                /* ... */
                wchar_t wstr[50];
                fscanf(stdin, "a(uparrow) Y(downarrow)%ls", wstr);
    with the same input line, zero will again be returned, but stdin will be left with a partially consumed multibyte character. - Forward references: the strtod, strtof, and strtold functions (7.20.1.3), the +

    Forward references: the strtod, strtof, and strtold functions (7.20.1.3), the strtol, strtoll, strtoul, and strtoull functions (7.20.1.4), conversion state (7.24.6), the wcrtomb function (7.24.6.3.3). @@ -13911,7 +13987,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int printf(const char * restrict format, ...);
    Description

    @@ -13926,7 +14002,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int scanf(const char * restrict format, ...);
    Description

    @@ -13943,7 +14019,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int snprintf(char * restrict s, size_t n,
                  const char * restrict format, ...);
    Description
    @@ -13966,7 +14042,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int sprintf(char * restrict s,
                  const char * restrict format, ...);
    Description
    @@ -13984,7 +14060,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int sscanf(const char * restrict s,
                  const char * restrict format, ...);
    Description
    @@ -14005,8 +14081,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdarg.h>
    -        #include <stdio.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
             int vfprintf(FILE * restrict stream,
                  const char * restrict format,
                  va_list arg);
    @@ -14023,8 +14099,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    EXAMPLE The following shows the use of the vfprintf function in a general error-reporting routine.

    -        #include <stdarg.h>
    -        #include <stdio.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
             void error(char *function_name, char *format, ...)
             {
                   va_list args;
    @@ -14050,8 +14126,8 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
    Synopsis

    -        #include <stdarg.h>
    -        #include <stdio.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
             int vfscanf(FILE * restrict stream,
                  const char * restrict format,
                  va_list arg);
    @@ -14072,8 +14148,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdarg.h>
    -        #include <stdio.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
             int vprintf(const char * restrict format,
                  va_list arg);
    Description
    @@ -14092,8 +14168,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdarg.h>
    -        #include <stdio.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
             int vscanf(const char * restrict format,
                  va_list arg);
    Description
    @@ -14113,8 +14189,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdarg.h>
    -        #include <stdio.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
             int vsnprintf(char * restrict s, size_t n,
                  const char * restrict format,
                  va_list arg);
    @@ -14137,8 +14213,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdarg.h>
    -        #include <stdio.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
             int vsprintf(char * restrict s,
                  const char * restrict format,
                  va_list arg);
    @@ -14158,8 +14234,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdarg.h>
    -        #include <stdio.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
             int vsscanf(const char * restrict s,
                  const char * restrict format,
                  va_list arg);
    @@ -14183,7 +14259,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int fgetc(FILE *stream);
    Description

    @@ -14207,7 +14283,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              char *fgets(char * restrict s, int n,
                   FILE * restrict stream);
    Description
    @@ -14232,7 +14308,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int fputc(int c, FILE *stream);
    Description

    @@ -14250,7 +14326,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int fputs(const char * restrict s,
                  FILE * restrict stream);
    Description
    @@ -14266,7 +14342,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int getc(FILE *stream);
    Description

    @@ -14285,7 +14361,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int getchar(void);
    Description

    @@ -14301,7 +14377,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             char *gets(char *s);
    Description

    @@ -14315,14 +14391,14 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 characters have been read into the array, the contents of the array remain unchanged and a null pointer is returned. If a read error occurs during the operation, the array contents are indeterminate and a null pointer is returned. - Forward references: future library directions (7.26.9). +

    Forward references: future library directions (7.26.9).

    7.19.7.8 The putc function
    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int putc(int c, FILE *stream);
    Description

    @@ -14338,7 +14414,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int putchar(int c);
    Description

    @@ -14352,7 +14428,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int puts(const char *s);
    Description

    @@ -14369,7 +14445,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -          #include <stdio.h>
    +          #include <stdio.h>
               int ungetc(int c, FILE *stream);
    Description

    @@ -14399,7 +14475,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    The ungetc function returns the character pushed back after conversion, or EOF if the operation fails. - Forward references: file positioning functions (7.19.9). +

    Forward references: file positioning functions (7.19.9). @@ -14416,7 +14492,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             size_t fread(void * restrict ptr,
                  size_t size, size_t nmemb,
                  FILE * restrict stream);
    @@ -14440,7 +14516,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             size_t fwrite(const void * restrict ptr,
                  size_t size, size_t nmemb,
                  FILE * restrict stream);
    @@ -14466,7 +14542,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int fgetpos(FILE * restrict stream,
                  fpos_t * restrict pos);
    Description
    @@ -14479,13 +14555,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    If successful, the fgetpos function returns zero; on failure, the fgetpos function returns nonzero and stores an implementation-defined positive value in errno. - Forward references: the fsetpos function (7.19.9.3). +

    Forward references: the fsetpos function (7.19.9.3).

    7.19.9.2 The fseek function
    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int fseek(FILE *stream, long int offset, int whence);
    Description

    @@ -14510,13 +14586,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Returns

    The fseek function returns nonzero only for a request that cannot be satisfied. - Forward references: the ftell function (7.19.9.4). +

    Forward references: the ftell function (7.19.9.4).

    7.19.9.3 The fsetpos function
    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int fsetpos(FILE *stream, const fpos_t *pos);
    Description

    @@ -14539,7 +14615,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             long int ftell(FILE *stream);
    Description

    @@ -14561,7 +14637,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             void rewind(FILE *stream);
    Description

    @@ -14580,7 +14656,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             void clearerr(FILE *stream);
    Description

    @@ -14595,7 +14671,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int feof(FILE *stream);
    Description

    @@ -14609,7 +14685,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int ferror(FILE *stream);
    Description

    @@ -14623,7 +14699,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             void perror(const char *s);
    Description

    @@ -14636,12 +14712,12 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Returns

    The perror function returns no value. - Forward references: the strerror function (7.21.6.2). +

    Forward references: the strerror function (7.21.6.2).

    7.20 General utilities

    - The header <stdlib.h> declares five types and several functions of general utility, and + The header <stdlib.h> declares five types and several functions of general utility, and defines several macros.257)

    The types declared are size_t and wchar_t (both described in 7.17), @@ -14693,7 +14769,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             double atof(const char *nptr);
    Description

    @@ -14704,13 +14780,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Returns

    The atof function returns the converted value. - Forward references: the strtod, strtof, and strtold functions (7.20.1.3). +

    Forward references: the strtod, strtof, and strtold functions (7.20.1.3).

    7.20.1.2 The atoi, atol, and atoll functions
    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             int atoi(const char *nptr);
             long int atol(const char *nptr);
             long long int atoll(const char *nptr);
    @@ -14726,7 +14802,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Returns

    The atoi, atol, and atoll functions return the converted value. - Forward references: the strtol, strtoll, strtoul, and strtoull functions +

    Forward references: the strtol, strtoll, strtoul, and strtoull functions (7.20.1.4). @@ -14734,7 +14810,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             double strtod(const char * restrict nptr,
                  char ** restrict endptr);
             float strtof(const char * restrict nptr,
    @@ -14807,7 +14883,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
      direction.
     

    If the subject sequence has the decimal form and at most DECIMAL_DIG (defined in - <float.h>) significant digits, the result should be correctly rounded. If the subject + <float.h>) significant digits, the result should be correctly rounded. If the subject sequence D has the decimal form and more than DECIMAL_DIG significant digits, consider the two bounding, adjacent decimal strings L and U, both having DECIMAL_DIG significant digits, such that the values of L, D, and U satisfy L <= D <= U. @@ -14836,7 +14912,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    259) An implementation may use the n-char sequence to determine extra information to be represented in the NaN's significand. -

    260) DECIMAL_DIG, defined in <float.h>, should be sufficiently large that L and U will usually round +

    260) DECIMAL_DIG, defined in <float.h>, should be sufficiently large that L and U will usually round to the same internal floating value, but if not will round to adjacent values. @@ -14844,7 +14920,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              long int strtol(
                   const char * restrict nptr,
                   char ** restrict endptr,
    @@ -14921,7 +14997,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             int rand(void);
    Description

    @@ -14940,7 +15016,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             void srand(unsigned int seed);
    Description

    @@ -14988,7 +15064,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              void *calloc(size_t nmemb, size_t size);
    Description

    @@ -15007,7 +15083,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              void free(void *ptr);
    Description

    @@ -15027,7 +15103,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             void *malloc(size_t size);
    Description

    @@ -15041,7 +15117,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             void *realloc(void *ptr, size_t size);
    Description

    @@ -15069,7 +15145,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             void abort(void);
    Description

    @@ -15087,7 +15163,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             int atexit(void (*func)(void));
    Description

    @@ -15099,13 +15175,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Returns

    The atexit function returns zero if the registration succeeds, nonzero if it fails. - Forward references: the exit function (7.20.4.3). +

    Forward references: the exit function (7.20.4.3).

    7.20.4.3 The exit function
    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             void exit(int status);
    Description

    @@ -15140,7 +15216,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              void _Exit(int status);
    Description

    @@ -15163,7 +15239,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             char *getenv(const char *name);
    Description

    @@ -15183,7 +15259,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             int system(const char *string);
    Description

    @@ -15240,7 +15316,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -          #include <stdlib.h>
    +          #include <stdlib.h>
               void *bsearch(const void *key, const void *base,
                    size_t nmemb, size_t size,
                    int (*compar)(const void *, const void *));
    @@ -15273,7 +15349,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -          #include <stdlib.h>
    +          #include <stdlib.h>
               void qsort(void *base, size_t nmemb, size_t size,
                    int (*compar)(const void *, const void *));
    Description
    @@ -15303,7 +15379,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              int abs(int j);
              long int labs(long int j);
              long long int llabs(long long int j);
    @@ -15323,7 +15399,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              div_t div(int numer, int denom);
              ldiv_t ldiv(long int numer, long int denom);
              lldiv_t lldiv(long long int numer, long long int denom);
    @@ -15364,7 +15440,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              int mblen(const char *s, size_t n);
    Description

    @@ -15383,7 +15459,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 or returns the number of bytes that are contained in the multibyte character (if the next n or fewer bytes form a valid multibyte character), or returns -1 (if they do not form a valid multibyte character). - Forward references: the mbtowc function (7.20.7.2). +

    Forward references: the mbtowc function (7.20.7.2). @@ -15394,7 +15470,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             int mbtowc(wchar_t * restrict pwc,
                  const char * restrict s,
                  size_t n);
    @@ -15425,7 +15501,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             int wctomb(char *s, wchar_t wc);
    Description

    @@ -15458,7 +15534,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -          #include <stdlib.h>
    +          #include <stdlib.h>
               size_t mbstowcs(wchar_t * restrict pwcs,
                    const char * restrict s,
                    size_t n);
    @@ -15493,7 +15569,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             size_t wcstombs(char * restrict s,
                  const wchar_t * restrict pwcs,
                  size_t n);
    @@ -15520,7 +15596,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    7.21.1 String function conventions

    - The header <string.h> declares one type and several functions, and defines one + The header <string.h> declares one type and several functions, and defines one macro useful for manipulating arrays of character type and other objects treated as arrays of character type.268) The type is size_t and the macro is NULL (both described in 7.17). Various methods are used for determining the lengths of the arrays, but in all cases @@ -15549,7 +15625,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -          #include <string.h>
    +          #include <string.h>
               void *memcpy(void * restrict s1,
                    const void * restrict s2,
                    size_t n);
    @@ -15571,7 +15647,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             void *memmove(void *s1, const void *s2, size_t n);
    Description

    @@ -15588,7 +15664,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             char *strcpy(char * restrict s1,
                  const char * restrict s2);
    Description
    @@ -15604,7 +15680,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             char *strncpy(char * restrict s1,
                  const char * restrict s2,
                  size_t n);
    @@ -15633,7 +15709,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -          #include <string.h>
    +          #include <string.h>
               char *strcat(char * restrict s1,
                    const char * restrict s2);
    Description
    @@ -15650,7 +15726,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -          #include <string.h>
    +          #include <string.h>
               char *strncat(char * restrict s1,
                    const char * restrict s2,
                    size_t n);
    @@ -15666,7 +15742,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Returns

    The strncat function returns the value of s1. - Forward references: the strlen function (7.21.6.3). +

    Forward references: the strlen function (7.21.6.3).

    footnotes

    270) Thus, the maximum number of characters that can end up in the array pointed to by s1 is @@ -15684,7 +15760,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              int memcmp(const void *s1, const void *s2, size_t n);
    Description

    @@ -15706,7 +15782,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              int strcmp(const char *s1, const char *s2);
    Description

    @@ -15724,7 +15800,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             int strcoll(const char *s1, const char *s2);
    Description

    @@ -15740,7 +15816,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             int strncmp(const char *s1, const char *s2, size_t n);
    Description

    @@ -15757,7 +15833,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             size_t strxfrm(char * restrict s1,
                  const char * restrict s2,
                  size_t n);
    @@ -15790,7 +15866,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             void *memchr(const void *s, int c, size_t n);
    Description

    @@ -15806,7 +15882,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             char *strchr(const char *s, int c);
    Description

    @@ -15823,7 +15899,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             size_t strcspn(const char *s1, const char *s2);
    Description

    @@ -15838,7 +15914,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             char *strpbrk(const char *s1, const char *s2);
    Description

    @@ -15853,7 +15929,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             char *strrchr(const char *s, int c);
    Description

    @@ -15870,7 +15946,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             size_t strspn(const char *s1, const char *s2);
    Description

    @@ -15884,7 +15960,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             char *strstr(const char *s1, const char *s2);
    Description

    @@ -15900,7 +15976,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             char *strtok(char * restrict s1,
                  const char * restrict s2);
    Description
    @@ -15935,7 +16011,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    EXAMPLE

    -         #include <string.h>
    +         #include <string.h>
              static char str[] = "?a???b,,,#c";
              char *t;
              t   =   strtok(str, "?");       //   t   points to the token "a"
    @@ -15950,7 +16026,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              void *memset(void *s, int c, size_t n);
    Description

    @@ -15965,7 +16041,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             char *strerror(int errnum);
    Description

    @@ -15984,7 +16060,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             size_t strlen(const char *s);
    Description

    @@ -15997,10 +16073,10 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    7.22 Type-generic math

    - The header <tgmath.h> includes the headers <math.h> and <complex.h> and + The header <tgmath.h> includes the headers <math.h> and <complex.h> and defines several type-generic macros.

    - Of the <math.h> and <complex.h> functions without an f (float) or l (long + Of the <math.h> and <complex.h> functions without an f (float) or l (long double) suffix, several have one or more parameters whose corresponding real type is double. For each such function, except modf, there is a corresponding type-generic macro.272) The parameters whose corresponding real type is double in the function @@ -16018,9 +16094,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

  • Otherwise, the type determined is float.

    - For each unsuffixed function in <math.h> for which there is a function in - <complex.h> with the same name except for a c prefix, the corresponding type- - generic macro (for both functions) has the same name as the function in <math.h>. The + For each unsuffixed function in <math.h> for which there is a function in + <complex.h> with the same name except for a c prefix, the corresponding type- + generic macro (for both functions) has the same name as the function in <math.h>. The corresponding type-generic macro for fabs and cabs is fabs. @@ -16028,7 +16104,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    -         <math.h>          <complex.h>           type-generic
    +         <math.h>          <complex.h>           type-generic
               function            function              macro
                acos               cacos                acos
                asin               casin                asin
    @@ -16050,8 +16126,8 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
      If at least one argument for a generic parameter is complex, then use of the macro invokes
      a complex function; otherwise, use of the macro invokes a real function.
     

    - For each unsuffixed function in <math.h> without a c-prefixed counterpart in - <complex.h> (except modf), the corresponding type-generic macro has the same + For each unsuffixed function in <math.h> without a c-prefixed counterpart in + <complex.h> (except modf), the corresponding type-generic macro has the same name as the function. These type-generic macros are:

            atan2                fma                  llround              remainder
    @@ -16067,8 +16143,8 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
      If all arguments for generic parameters are real, then use of the macro invokes a real
      function; otherwise, use of the macro results in undefined behavior.
     

    - For each unsuffixed function in <complex.h> that is not a c-prefixed counterpart to a - function in <math.h>, the corresponding type-generic macro has the same name as the + For each unsuffixed function in <complex.h> that is not a c-prefixed counterpart to a + function in <math.h>, the corresponding type-generic macro has the same name as the function. These type-generic macros are:

    @@ -16078,7 +16154,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     

    EXAMPLE With the declarations

    -         #include <tgmath.h>
    +         #include <tgmath.h>
              int n;
              float f;
              double d;
    @@ -16124,7 +16200,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
     

    7.23.1 Components of time

    - The header <time.h> defines two macros, and declares several types and functions for + The header <time.h> defines two macros, and declares several types and functions for manipulating time. Many functions deal with a calendar time that represents the current date (according to the Gregorian calendar) and time. Some functions deal with local time, which is the calendar time expressed for some specific time zone, and with Daylight @@ -16179,7 +16255,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <time.h>
    +         #include <time.h>
              clock_t clock(void);
    Description

    @@ -16202,7 +16278,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <time.h>
    +         #include <time.h>
              double difftime(time_t time1, time_t time0);
    Description

    @@ -16221,7 +16297,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <time.h>
    +         #include <time.h>
              time_t mktime(struct tm *timeptr);
    Description

    @@ -16242,8 +16318,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    EXAMPLE What day of the week is July 4, 2001?

    -         #include <stdio.h>
    -         #include <time.h>
    +         #include <stdio.h>
    +         #include <time.h>
              static const char *const wday[] = {
                      "Sunday", "Monday", "Tuesday", "Wednesday",
                      "Thursday", "Friday", "Saturday", "-unknown-"
    @@ -16278,7 +16354,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
    Synopsis

    -        #include <time.h>
    +        #include <time.h>
             time_t time(time_t *timer);
    Description

    @@ -16304,7 +16380,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <time.h>
    +        #include <time.h>
             char *asctime(const struct tm *timeptr);
    Description

    @@ -16341,7 +16417,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <time.h>
    +        #include <time.h>
             char *ctime(const time_t *timer);
    Description

    @@ -16353,14 +16429,14 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    The ctime function returns the pointer returned by the asctime function with that broken-down time as argument. - Forward references: the localtime function (7.23.3.4). +

    Forward references: the localtime function (7.23.3.4).

    7.23.3.3 The gmtime function
    Synopsis

    -        #include <time.h>
    +        #include <time.h>
             struct tm *gmtime(const time_t *timer);
    Description

    @@ -16375,7 +16451,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <time.h>
    +        #include <time.h>
             struct tm *localtime(const time_t *timer);
    Description

    @@ -16390,7 +16466,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <time.h>
    +        #include <time.h>
             size_t strftime(char * restrict s,
                  size_t maxsize,
                  const char * restrict format,
    @@ -16569,7 +16645,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
     

    7.24.1 Introduction

    - The header <wchar.h> declares four data types, one tag, four macros, and many + The header <wchar.h> declares four data types, one tag, four macros, and many functions.277)

    The types declared are wchar_t and size_t (both described in 7.17); @@ -16637,8 +16713,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              int fwprintf(FILE * restrict stream,
                   const wchar_t * restrict format, ...);
    Description
    @@ -16930,9 +17006,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 EXAMPLE To print a date and time in the form ''Sunday, July 3, 10:02'' followed by pi to five decimal places:
    -        #include <math.h>
    -        #include <stdio.h>
    -        #include <wchar.h>
    +        #include <math.h>
    +        #include <stdio.h>
    +        #include <wchar.h>
             /* ... */
             wchar_t *weekday, *month; // pointers to wide strings
             int day, hour, min;
    @@ -16940,7 +17016,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
                     weekday, month, day, hour, min);
             fwprintf(stdout, L"pi = %.5f\n", 4 * atan(1.0));
    - Forward references: the btowc function (7.24.6.1.1), the mbrtowc function +

    Forward references: the btowc function (7.24.6.1.1), the mbrtowc function (7.24.6.3.2).

    footnotes
    @@ -16971,8 +17047,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdio.h>
    -        #include <wchar.h>
    +        #include <stdio.h>
    +        #include <wchar.h>
             int fwscanf(FILE * restrict stream,
                  const wchar_t * restrict format, ...);
    Description
    @@ -17198,8 +17274,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    EXAMPLE 1 The call:

    -          #include <stdio.h>
    -          #include <wchar.h>
    +          #include <stdio.h>
    +          #include <wchar.h>
               /* ... */
               int n, i; float x; wchar_t name[50];
               n = fwscanf(stdin, L"%d%f%ls", &i, &x, name);
    @@ -17212,8 +17288,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    EXAMPLE 2 The call:

    -          #include <stdio.h>
    -          #include <wchar.h>
    +          #include <stdio.h>
    +          #include <wchar.h>
               /* ... */
               int i; float x; double y;
               fwscanf(stdin, L"%2d%f%*d %lf", &i, &x, &y);
    @@ -17225,7 +17301,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 - Forward references: the wcstod, wcstof, and wcstold functions (7.24.4.1.1), the +

    Forward references: the wcstod, wcstof, and wcstold functions (7.24.4.1.1), the wcstol, wcstoll, wcstoul, and wcstoull functions (7.24.4.1.2), the wcrtomb function (7.24.6.3.3). @@ -17242,7 +17318,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             int swprintf(wchar_t * restrict s,
                  size_t n,
                  const wchar_t * restrict format, ...);
    @@ -17262,7 +17338,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             int swscanf(const wchar_t * restrict s,
                  const wchar_t * restrict format, ...);
    Description
    @@ -17283,9 +17359,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdarg.h>
    -        #include <stdio.h>
    -        #include <wchar.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
    +        #include <wchar.h>
             int vfwprintf(FILE * restrict stream,
                  const wchar_t * restrict format,
                  va_list arg);
    @@ -17303,9 +17379,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 EXAMPLE The following shows the use of the vfwprintf function in a general error-reporting routine.
    -        #include <stdarg.h>
    -        #include <stdio.h>
    -        #include <wchar.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
    +        #include <wchar.h>
             void error(char *function_name, wchar_t *format, ...)
             {
                   va_list args;
    @@ -17331,9 +17407,9 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
    Synopsis

    -        #include <stdarg.h>
    -        #include <stdio.h>
    -        #include <wchar.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
    +        #include <wchar.h>
             int vfwscanf(FILE * restrict stream,
                  const wchar_t * restrict format,
                  va_list arg);
    @@ -17354,8 +17430,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdarg.h>
    -        #include <wchar.h>
    +        #include <stdarg.h>
    +        #include <wchar.h>
             int vswprintf(wchar_t * restrict s,
                  size_t n,
                  const wchar_t * restrict format,
    @@ -17377,8 +17453,8 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
    Synopsis

    -        #include <stdarg.h>
    -        #include <wchar.h>
    +        #include <stdarg.h>
    +        #include <wchar.h>
             int vswscanf(const wchar_t * restrict s,
                  const wchar_t * restrict format,
                  va_list arg);
    @@ -17399,8 +17475,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdarg.h>
    -        #include <wchar.h>
    +        #include <stdarg.h>
    +        #include <wchar.h>
             int vwprintf(const wchar_t * restrict format,
                  va_list arg);
    Description
    @@ -17419,8 +17495,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdarg.h>
    -        #include <wchar.h>
    +        #include <stdarg.h>
    +        #include <wchar.h>
             int vwscanf(const wchar_t * restrict format,
                  va_list arg);
    Description
    @@ -17440,7 +17516,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             int wprintf(const wchar_t * restrict format, ...);
    Description

    @@ -17455,7 +17531,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             int wscanf(const wchar_t * restrict format, ...);
    Description

    @@ -17475,8 +17551,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              wint_t fgetwc(FILE *stream);
    Description

    @@ -17502,8 +17578,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              wchar_t *fgetws(wchar_t * restrict s,
                   int n, FILE * restrict stream);
    Description
    @@ -17527,8 +17603,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdio.h>
    -        #include <wchar.h>
    +        #include <stdio.h>
    +        #include <wchar.h>
             wint_t fputwc(wchar_t c, FILE *stream);
    Description

    @@ -17547,8 +17623,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    -        #include <wchar.h>
    +        #include <stdio.h>
    +        #include <wchar.h>
             int fputws(const wchar_t * restrict s,
                  FILE * restrict stream);
    Description
    @@ -17565,8 +17641,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              int fwide(FILE *stream, int mode);
    Description

    @@ -17588,8 +17664,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              wint_t getwc(FILE *stream);
    Description

    @@ -17605,7 +17681,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              wint_t getwchar(void);
    @@ -17624,8 +17700,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <stdio.h>
    -        #include <wchar.h>
    +        #include <stdio.h>
    +        #include <wchar.h>
             wint_t putwc(wchar_t c, FILE *stream);
    Description

    @@ -17640,7 +17716,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wint_t putwchar(wchar_t c);
    Description

    @@ -17653,8 +17729,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    -        #include <wchar.h>
    +        #include <stdio.h>
    +        #include <wchar.h>
             wint_t ungetwc(wint_t c, FILE *stream);
    Description

    @@ -17688,7 +17764,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    7.24.4 General wide string utilities

    - The header <wchar.h> declares a number of functions useful for wide string + The header <wchar.h> declares a number of functions useful for wide string manipulation. Various methods are used for determining the lengths of the arrays, but in all cases a wchar_t * argument points to the initial (lowest addressed) element of the array. If an array is accessed beyond the end of an object, the behavior is undefined. @@ -17708,7 +17784,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             double wcstod(const wchar_t * restrict nptr,
                  wchar_t ** restrict endptr);
             float wcstof(const wchar_t * restrict nptr,
    @@ -17790,7 +17866,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
     

    If the subject sequence has the decimal form and at most DECIMAL_DIG (defined in - <float.h>) significant digits, the result should be correctly rounded. If the subject + <float.h>) significant digits, the result should be correctly rounded. If the subject sequence D has the decimal form and more than DECIMAL_DIG significant digits, consider the two bounding, adjacent decimal strings L and U, both having DECIMAL_DIG significant digits, such that the values of L, D, and U satisfy L <= D <= U. @@ -17822,7 +17898,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    295) An implementation may use the n-wchar sequence to determine extra information to be represented in the NaN's significand. -

    296) DECIMAL_DIG, defined in <float.h>, should be sufficiently large that L and U will usually round +

    296) DECIMAL_DIG, defined in <float.h>, should be sufficiently large that L and U will usually round to the same internal floating value, but if not will round to adjacent values. @@ -17830,7 +17906,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             long int wcstol(
                  const wchar_t * restrict nptr,
                  wchar_t ** restrict endptr,
    @@ -17906,7 +17982,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wcscpy(wchar_t * restrict s1,
                  const wchar_t * restrict s2);
    Description
    @@ -17922,7 +17998,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -          #include <wchar.h>
    +          #include <wchar.h>
               wchar_t *wcsncpy(wchar_t * restrict s1,
                    const wchar_t * restrict s2,
                    size_t n);
    @@ -17948,7 +18024,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -          #include <wchar.h>
    +          #include <wchar.h>
               wchar_t *wmemcpy(wchar_t * restrict s1,
                    const wchar_t * restrict s2,
                    size_t n);
    @@ -17969,7 +18045,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wmemmove(wchar_t *s1, const wchar_t *s2,
                  size_t n);
    Description
    @@ -17989,7 +18065,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wcscat(wchar_t * restrict s1,
                  const wchar_t * restrict s2);
    Description
    @@ -18005,7 +18081,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wcsncat(wchar_t * restrict s1,
                  const wchar_t * restrict s2,
                  size_t n);
    @@ -18036,7 +18112,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              int wcscmp(const wchar_t *s1, const wchar_t *s2);
    Description

    @@ -18052,7 +18128,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              int wcscoll(const wchar_t *s1, const wchar_t *s2);
    Description

    @@ -18073,7 +18149,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             int wcsncmp(const wchar_t *s1, const wchar_t *s2,
                  size_t n);
    Description
    @@ -18091,7 +18167,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             size_t wcsxfrm(wchar_t * restrict s1,
                  const wchar_t * restrict s2,
                  size_t n);
    @@ -18121,7 +18197,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             int wmemcmp(const wchar_t *s1, const wchar_t *s2,
                  size_t n);
    Description
    @@ -18140,7 +18216,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wcschr(const wchar_t *s, wchar_t c);
    Description

    @@ -18155,7 +18231,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             size_t wcscspn(const wchar_t *s1, const wchar_t *s2);
    Description

    @@ -18171,7 +18247,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wcspbrk(const wchar_t *s1, const wchar_t *s2);
    Description

    @@ -18186,7 +18262,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wcsrchr(const wchar_t *s, wchar_t c);
    Description

    @@ -18201,7 +18277,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             size_t wcsspn(const wchar_t *s1, const wchar_t *s2);
    Description

    @@ -18217,7 +18293,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wcsstr(const wchar_t *s1, const wchar_t *s2);
    Description

    @@ -18234,7 +18310,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wcstok(wchar_t * restrict s1,
                  const wchar_t * restrict s2,
                  wchar_t ** restrict ptr);
    @@ -18276,7 +18352,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    EXAMPLE

    -        #include <wchar.h>
    +        #include <wchar.h>
             static wchar_t str1[] = L"?a???b,,,#c";
             static wchar_t str2[] = L"\t \t";
             wchar_t *t, *ptr1, *ptr2;
    @@ -18291,7 +18367,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wmemchr(const wchar_t *s, wchar_t c,
                  size_t n);
    Description
    @@ -18310,7 +18386,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             size_t wcslen(const wchar_t *s);
    Description

    @@ -18324,7 +18400,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wmemset(wchar_t *s, wchar_t c, size_t n);
    Description

    @@ -18340,8 +18416,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <time.h>
    -        #include <wchar.h>
    +        #include <time.h>
    +        #include <wchar.h>
             size_t wcsftime(wchar_t * restrict s,
                  size_t maxsize,
                  const wchar_t * restrict format,
    @@ -18368,7 +18444,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
     

    7.24.6 Extended multibyte/wide character conversion utilities

    - The header <wchar.h> declares an extended set of functions useful for conversion + The header <wchar.h> declares an extended set of functions useful for conversion between multibyte characters and wide characters.

    Most of the following functions -- those that are listed as ''restartable'', 7.24.6.3 and @@ -18409,8 +18485,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    -        #include <wchar.h>
    +        #include <stdio.h>
    +        #include <wchar.h>
             wint_t btowc(int c);
    Description

    @@ -18426,8 +18502,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <stdio.h>
    -        #include <wchar.h>
    +        #include <stdio.h>
    +        #include <wchar.h>
             int wctob(wint_t c);
    Description

    @@ -18446,7 +18522,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             int mbsinit(const mbstate_t *ps);
    Description

    @@ -18475,7 +18551,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             size_t mbrlen(const char * restrict s,
                  size_t n,
                  mbstate_t * restrict ps);
    @@ -18490,14 +18566,14 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    The mbrlen function returns a value between zero and n, inclusive, (size_t)(-2), or (size_t)(-1). - Forward references: the mbrtowc function (7.24.6.3.2). +

    Forward references: the mbrtowc function (7.24.6.3.2).

    7.24.6.3.2 The mbrtowc function
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              size_t mbrtowc(wchar_t * restrict pwc,
                   const char * restrict s,
                   size_t n,
    @@ -18548,7 +18624,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              size_t wcrtomb(char * restrict s,
                   wchar_t wc,
                   mbstate_t * restrict ps);
    @@ -18592,7 +18668,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -          #include <wchar.h>
    +          #include <wchar.h>
               size_t mbsrtowcs(wchar_t * restrict dst,
                    const char ** restrict src,
                    size_t len,
    @@ -18635,7 +18711,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              size_t wcsrtombs(char * restrict dst,
                   const wchar_t ** restrict src,
                   size_t len,
    @@ -18680,7 +18756,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
     

    7.25.1 Introduction

    - The header <wctype.h> declares three data types, one macro, and many functions.303) + The header <wctype.h> declares three data types, one macro, and many functions.303)

    The types declared are

    @@ -18723,7 +18799,7 @@ Index     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
     
     

    7.25.2 Wide character classification utilities

    - The header <wctype.h> declares several functions useful for classifying wide + The header <wctype.h> declares several functions useful for classifying wide characters.

    The term printing wide character refers to a member of a locale-specific set of wide @@ -18741,7 +18817,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 character classification function from 7.4.1 returns true, except that the iswgraph and iswpunct functions may differ with respect to wide characters other than L' ' that are both printing and white-space wide characters.304) - Forward references: the wctob function (7.24.6.1.2). +

    Forward references: the wctob function (7.24.6.1.2).

    footnotes

    304) For example, if the expression isalpha(wctob(wc)) evaluates to true, then the call @@ -18754,7 +18830,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             int iswalnum(wint_t wc);
    Description

    @@ -18765,7 +18841,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             int iswalpha(wint_t wc);
    Description

    @@ -18785,7 +18861,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswblank(wint_t wc);
    Description

    @@ -18799,7 +18875,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswcntrl(wint_t wc);
    Description

    @@ -18809,7 +18885,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswdigit(wint_t wc);
    Description

    @@ -18820,7 +18896,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswgraph(wint_t wc);
    @@ -18842,7 +18918,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswlower(wint_t wc);
    Description

    @@ -18854,7 +18930,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswprint(wint_t wc);
    Description

    @@ -18864,7 +18940,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswpunct(wint_t wc);
    Description

    @@ -18876,7 +18952,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswspace(wint_t wc);
    @@ -18892,7 +18968,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             int iswupper(wint_t wc);
    Description

    @@ -18904,7 +18980,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             int iswxdigit(wint_t wc);
    Description

    @@ -18921,7 +18997,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             int iswctype(wint_t wc, wctype_t desc);
    Description

    @@ -18949,13 +19025,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    The iswctype function returns nonzero (true) if and only if the value of the wide character wc has the property described by desc. - Forward references: the wctype function (7.25.2.2.2). +

    Forward references: the wctype function (7.25.2.2.2).

    7.25.2.2.2 The wctype function
    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             wctype_t wctype(const char *property);
    Description

    @@ -18973,7 +19049,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    7.25.3 Wide character case mapping utilities

    - The header <wctype.h> declares several functions useful for mapping wide characters. + The header <wctype.h> declares several functions useful for mapping wide characters.

    7.25.3.1 Wide character case mapping functions
    @@ -18981,7 +19057,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             wint_t towlower(wint_t wc);
    Description

    @@ -18998,7 +19074,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             wint_t towupper(wint_t wc);
    Description

    @@ -19022,7 +19098,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             wint_t towctrans(wint_t wc, wctrans_t desc);
    Description

    @@ -19044,7 +19120,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             wctrans_t wctrans(const char *property);
    Description

    @@ -19073,32 +19149,32 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 cerfc clog10 clgamma cexp2 clog1p ctgamma

    and the same names suffixed with f or l may be added to the declarations in the - <complex.h> header. + <complex.h> header.

    7.26.2 Character handling

    Function names that begin with either is or to, and a lowercase letter may be added to - the declarations in the <ctype.h> header. + the declarations in the <ctype.h> header.

    7.26.3 Errors

    Macros that begin with E and a digit or E and an uppercase letter may be added to the - declarations in the <errno.h> header. + declarations in the <errno.h> header.

    7.26.4 Format conversion of integer types

    Macro names beginning with PRI or SCN followed by any lowercase letter or X may be - added to the macros defined in the <inttypes.h> header. + added to the macros defined in the <inttypes.h> header.

    7.26.5 Localization

    Macros that begin with LC_ and an uppercase letter may be added to the definitions in - the <locale.h> header. + the <locale.h> header.

    7.26.6 Signal handling

    Macros that begin with either SIG and an uppercase letter or SIG_ and an uppercase - letter may be added to the definitions in the <signal.h> header. + letter may be added to the definitions in the <signal.h> header.

    7.26.7 Boolean type and values

    @@ -19108,9 +19184,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    7.26.8 Integer types

    Typedef names beginning with int or uint and ending with _t may be added to the - types defined in the <stdint.h> header. Macro names beginning with INT or UINT + types defined in the <stdint.h> header. Macro names beginning with INT or UINT and ending with _MAX, _MIN, or _C may be added to the macros defined in the - <stdint.h> header. + <stdint.h> header.

    7.26.9 Input/output

    @@ -19126,26 +19202,26 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    7.26.10 General utilities

    Function names that begin with str and a lowercase letter may be added to the - declarations in the <stdlib.h> header. + declarations in the <stdlib.h> header.

    7.26.11 String handling

    Function names that begin with str, mem, or wcs and a lowercase letter may be added - to the declarations in the <string.h> header. + to the declarations in the <string.h> header.

    7.26.12 Extended multibyte and wide character utilities

    Function names that begin with wcs and a lowercase letter may be added to the - declarations in the <wchar.h> header. + declarations in the <wchar.h> header.

    Lowercase letters may be added to the conversion specifiers and length modifiers in fwprintf and fwscanf. Other characters may be used in extensions.

    7.26.13 Wide character classification and mapping utilities

    - <wctype.h> + <wctype.h>

    Function names that begin with is or to and a lowercase letter may be added to the - declarations in the <wctype.h> header. + declarations in the <wctype.h> header.

    Annex A

    @@ -20740,7 +20816,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
                                         (informative)
                                  Implementation limits
    - The contents of the header <limits.h> are given below, in alphabetical order. The + The contents of the header <limits.h> are given below, in alphabetical order. The minimum magnitudes shown shall be replaced by implementation-defined magnitudes with the same sign. The values shall all be constant expressions suitable for use in #if preprocessing directives. The components are described further in 5.2.4.2.1. @@ -20765,7 +20841,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 #define UINT_MAX 65535 #define ULONG_MAX 4294967295 #define ULLONG_MAX 18446744073709551615
    - The contents of the header <float.h> are given below. All integer values, except + The contents of the header <float.h> are given below. All integer values, except FLT_ROUNDS, shall be constant expressions suitable for use in #if preprocessing directives; all floating values shall be constant expressions. The components are described further in 5.2.4.2.2. @@ -20871,7 +20947,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    This specification does not define the behavior of signaling NaNs.309) It generally uses the term NaN to denote quiet NaNs. The NAN and INFINITY macros and the nan - functions in <math.h> provide designations for IEC 60559 NaNs and infinities. + functions in <math.h> provide designations for IEC 60559 NaNs and infinities.

    footnotes

    309) Since NaNs created by IEC 60559 operations are always quiet, quiet NaNs (along with infinities) are @@ -20885,13 +20961,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Foreword

    @@ -489,22 +601,22 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    • conditional (optional) features (including some that were previously mandatory)
    • support for multiple threads of execution including an improved memory sequencing - model, atomic objects, and thread-local storage (<stdatomic.h> and - <threads.h>) -
    • additional floating-point characteristic macros (<float.h>) -
    • querying and specifying alignment of objects (<stdalign.h>, <stdlib.h>) -
    • Unicode characters and strings (<uchar.h>) (originally specified in + model, atomic objects, and thread-local storage (<stdatomic.h> and + <threads.h>) +
    • additional floating-point characteristic macros (<float.h>) +
    • querying and specifying alignment of objects (<stdalign.h>, <stdlib.h>) +
    • Unicode characters and strings (<uchar.h>) (originally specified in ISO/IEC TR 19769:2004)
    • type-generic expressions
    • static assertions
    • anonymous structures and unions
    • no-return functions -
    • macros to create complex numbers (<complex.h>) +
    • macros to create complex numbers (<complex.h>)
    • support for opening files for exclusive access -
    • removed the gets function (<stdio.h>) +
    • removed the gets function (<stdio.h>)
    • added the aligned_alloc, at_quick_exit, and quick_exit functions - (<stdlib.h>) + (<stdlib.h>)
    • (conditional) support for bounds-checking interfaces (originally specified in ISO/IEC TR 24731-1:2007)
    • (conditional) support for analyzability @@ -512,20 +624,20 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Major changes in the second edition included:

        -
      • restricted character set support via digraphs and <iso646.h> (originally specified +
      • restricted character set support via digraphs and <iso646.h> (originally specified in AMD1) -
      • wide character library support in <wchar.h> and <wctype.h> (originally +
      • wide character library support in <wchar.h> and <wctype.h> (originally specified in AMD1)
      • more precise aliasing rules via effective type
      • restricted pointers
      • variable length arrays
      • flexible array members
      • static and type qualifiers in parameter array declarators -
      • complex (and imaginary) support in <complex.h> -
      • type-generic math macros in <tgmath.h> +
      • complex (and imaginary) support in <complex.h> +
      • type-generic math macros in <tgmath.h>
      • the long long int type and library functions
      • increased minimum translation limits -
      • additional floating-point characteristics in <float.h> +
      • additional floating-point characteristics in <float.h>
      • remove implicit int
      • reliable integer division
      • universal character names (\u and \U) @@ -536,7 +648,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      • compound literals
      • designated initializers
      • // comments -
      • extended integer types and library functions in <inttypes.h> and <stdint.h> +
      • extended integer types and library functions in <inttypes.h> and <stdint.h>
      • remove implicit function declaration
      • preprocessor arithmetic done in intmax_t/uintmax_t
      • mixed declarations and code @@ -544,16 +656,16 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      • integer constant type rules
      • integer promotion rules
      • macros with a variable number of arguments -
      • the vscanf family of functions in <stdio.h> and <wchar.h> -
      • additional math library functions in <math.h> +
      • the vscanf family of functions in <stdio.h> and <wchar.h> +
      • additional math library functions in <math.h>
      • treatment of error conditions by math library functions (math_errhandling) -
      • floating-point environment access in <fenv.h> +
      • floating-point environment access in <fenv.h>
      • IEC 60559 (also known as IEC 559 or IEEE arithmetic) support
      • trailing comma allowed in enum declaration
      • %lf conversion specifier allowed in printf
      • inline functions -
      • the snprintf family of functions in <stdio.h> -
      • boolean type in <stdbool.h> +
      • the snprintf family of functions in <stdio.h> +
      • boolean type in <stdbool.h>
      • idempotent type qualifiers
      • empty macro arguments
      • new structure type compatibility rules (tag compatibility) @@ -1018,9 +1130,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 hosted implementation shall accept any strictly conforming program. A conforming freestanding implementation shall accept any strictly conforming program that does not use complex types and in which the use of the features specified in the library clause - (clause 7) is confined to the contents of the standard headers <float.h>, - <iso646.h>, <limits.h>, <stdalign.h>, <stdarg.h>, <stdbool.h>, - <stddef.h>, and <stdint.h>. A conforming implementation may have extensions + (clause 7) is confined to the contents of the standard headers <float.h>, + <iso646.h>, <limits.h>, <stdalign.h>, <stdarg.h>, <stdbool.h>, + <stddef.h>, and <stdint.h>. A conforming implementation may have extensions (including additional library functions), provided they do not alter the behavior of any strictly conforming program.4) @@ -1032,11 +1144,11 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

        An implementation shall be accompanied by a document that defines all implementation- defined and locale-specific characteristics and all extensions. - Forward references: conditional inclusion (6.10.1), error directive (6.10.5), - characteristics of floating types <float.h> (7.7), alternative spellings <iso646.h> - (7.9), sizes of integer types <limits.h> (7.10), alignment <stdalign.h> (7.15), - variable arguments <stdarg.h> (7.16), boolean type and values <stdbool.h> - (7.18), common definitions <stddef.h> (7.19), integer types <stdint.h> (7.20). +

        Forward references: conditional inclusion (6.10.1), error directive (6.10.5), + characteristics of floating types <float.h> (7.7), alternative spellings <iso646.h> + (7.9), sizes of integer types <limits.h> (7.10), alignment <stdalign.h> (7.15), + variable arguments <stdarg.h> (7.16), boolean type and values <stdbool.h> + (7.18), common definitions <stddef.h> (7.19), integer types <stdint.h> (7.20). @@ -1070,7 +1182,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 the execution environment in this International Standard. Their characteristics define and constrain the results of executing conforming C programs constructed according to the syntactic and semantic rules for conforming implementations. - Forward references: In this clause, only a few of many possible forward references +

        Forward references: In this clause, only a few of many possible forward references have been noted.

        5.1 Conceptual models

        @@ -1089,7 +1201,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 linkage, manipulation of objects whose identifiers have external linkage, or manipulation of data files. Translation units may be separately translated and then later linked to produce an executable program. - Forward references: linkages of identifiers (6.2.2), external definitions (6.9), +

        Forward references: linkages of identifiers (6.2.2), external definitions (6.9), preprocessing directives (6.10).

        5.1.1.2 Translation phases
        @@ -1136,7 +1248,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 current translation. All such translator output is collected into a program image which contains information needed for execution in its execution environment. - Forward references: universal character names (6.4.3), lexical elements (6.4), +

        Forward references: universal character names (6.4.3), lexical elements (6.4), preprocessing directives (6.10), trigraph sequences (5.2.1.1), external definitions (6.9). @@ -1187,7 +1299,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 initial values) before program startup. The manner and timing of such initialization are otherwise unspecified. Program termination returns control to the execution environment. - Forward references: storage durations of objects (6.2.4), initialization (6.7.9). +

        Forward references: storage durations of objects (6.2.4), initialization (6.7.9).

        5.1.2.1 Freestanding environment

        @@ -1266,7 +1378,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 returned by the main function as its argument;11) reaching the } that terminates the main function returns a value of 0. If the return type is not compatible with int, the termination status returned to the host environment is unspecified. - Forward references: definition of terms (7.1.1), the exit function (7.22.4.4). +

        Forward references: definition of terms (7.1.1), the exit function (7.22.4.4).

        footnotes

        11) In accordance with 6.2.4, the lifetimes of objects with automatic storage duration declared in main @@ -1423,7 +1535,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 EXAMPLE 7 The grouping of an expression does not completely determine its evaluation. In the following fragment

        -          #include <stdio.h>
        +          #include <stdio.h>
                   int sum;
                   char *p;
                   /* ... */
        @@ -1435,7 +1547,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
          sequence point (the ;), and the call to getchar can occur at any point prior to the need of its returned
          value.
          
        - Forward references: expressions (6.5), type qualifiers (6.7.3), statements (6.8), the
        +

        Forward references: expressions (6.5), type qualifiers (6.7.3), statements (6.8), the signal function (7.14), files (7.21.3).

        footnotes
        @@ -1443,7 +1555,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 flags and control modes. Floating-point operations implicitly set the status flags; modes affect result values of floating-point operations. Implementations that support such floating-point state are required to regard changes to it as side effects -- see annex F for details. The floating-point - environment library <fenv.h> provides a programming facility for indicating when these side + environment library <fenv.h> provides a programming facility for indicating when these side effects matter, freeing the implementations in other cases.

        13) The executions of unsequenced evaluations can interleave. Indeterminately sequenced evaluations @@ -1719,7 +1831,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Standard the term does not include other characters that are letters in other alphabets.

        The universal character name construct provides a way to name other characters. - Forward references: universal character names (6.4.3), character constants (6.4.4.4), +

        Forward references: universal character names (6.4.3), character constants (6.4.4.4), preprocessing directives (6.10), string literals (6.4.5), comments (6.4.9), string (7.1.1).

        5.2.1.1 Trigraph sequences
        @@ -1822,7 +1934,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 which can be stored in a single char object. The external representations in a text file need not be identical to the internal representations, and are outside the scope of this International Standard. - Forward references: the isprint function (7.4.1.8), the fputc function (7.21.7.3). +

        Forward references: the isprint function (7.4.1.8), the fputc function (7.21.7.3).

        5.2.3 Signals and interrupts

        @@ -1890,9 +2002,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

        5.2.4.2 Numerical limits

        An implementation is required to document all the limits specified in this subclause, - which are specified in the headers <limits.h> and <float.h>. Additional limits are - specified in <stdint.h>. - Forward references: integer types <stdint.h> (7.20). + which are specified in the headers <limits.h> and <float.h>. Additional limits are + specified in <stdint.h>. +

        Forward references: integer types <stdint.h> (7.20).

        5.2.4.2.1 Sizes of integer types

        @@ -1952,7 +2064,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 value of CHAR_MAX shall be the same as that of SCHAR_MAX. Otherwise, the value of CHAR_MIN shall be 0 and the value of CHAR_MAX shall be the same as that of UCHAR_MAX.20) The value UCHAR_MAX shall equal 2CHAR_BIT - 1. - Forward references: representations of types (6.2.6), conditional inclusion (6.10.1). +

        Forward references: representations of types (6.2.6), conditional inclusion (6.10.1).

        footnotes

        20) See 6.2.5. @@ -2004,13 +2116,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 real numbers.

        The accuracy of the floating-point operations (+, -, *, /) and of the library functions in - <math.h> and <complex.h> that return floating-point results is implementation- + <math.h> and <complex.h> that return floating-point results is implementation- defined, as is the accuracy of the conversion between floating-point internal representations and string representations performed by the library functions in - <stdio.h>, <stdlib.h>, and <wchar.h>. The implementation may state that the + <stdio.h>, <stdlib.h>, and <wchar.h>. The implementation may state that the accuracy is unknown.

        - All integer values in the <float.h> header, except FLT_ROUNDS, shall be constant + All integer values in the <float.h> header, except FLT_ROUNDS, shall be constant expressions suitable for use in #if preprocessing directives; all floating values shall be constant expressions. All except DECIMAL_DIG, FLT_EVAL_METHOD, FLT_RADIX, and FLT_ROUNDS have separate names for all three floating-point types. The floating- @@ -2163,7 +2275,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 should be the identity function.

        EXAMPLE 1 The following describes an artificial floating-point representation that meets the minimum - requirements of this International Standard, and the appropriate values in a <float.h> header for type + requirements of this International Standard, and the appropriate values in a <float.h> header for type float:

                             6
        @@ -2187,7 +2299,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

        EXAMPLE 2 The following describes floating-point representations that also meet the requirements for single-precision and double-precision numbers in IEC 60559,28) and the appropriate values in a - <float.h> header for types float and double: + <float.h> header for types float and double:

                            24
                x f = s2e   (Sum) f k 2-k ,
        @@ -2243,10 +2355,10 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
          example, if the widest type were to use the minimal-width IEC 60559 double-extended format (64 bits of
          precision), then DECIMAL_DIG would be 21.
          
        - Forward references:        conditional inclusion (6.10.1), complex arithmetic
        - <complex.h> (7.3), extended multibyte and wide character utilities <wchar.h>
        - (7.28), floating-point environment <fenv.h> (7.6), general utilities <stdlib.h>
        - (7.22), input/output <stdio.h> (7.21), mathematics <math.h> (7.12).
        +

        Forward references: conditional inclusion (6.10.1), complex arithmetic + <complex.h> (7.3), extended multibyte and wide character utilities <wchar.h> + (7.28), floating-point environment <fenv.h> (7.6), general utilities <stdlib.h> + (7.22), input/output <stdio.h> (7.21), mathematics <math.h> (7.12).

        footnotes
        @@ -2258,7 +2370,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 similar behavior.

        23) Evaluation of FLT_ROUNDS correctly reflects any execution-time change of rounding mode through - the function fesetround in <fenv.h>. + the function fesetround in <fenv.h>.

        24) The evaluation method determines evaluation formats of expressions involving all floating types, not just real types. For example, if FLT_EVAL_METHOD is 1, then the product of two float @@ -2350,7 +2462,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 As a special case, a type name (which is not a declaration of an identifier) is considered to have a scope that begins just after the place within the type name where the omitted identifier would appear were it not omitted. - Forward references: declarations (6.7), function calls (6.5.2.2), function definitions +

        Forward references: declarations (6.7), function calls (6.5.2.2), function definitions (6.9.1), identifiers (6.4.2), macro replacement (6.10.3), name spaces of identifiers (6.2.3), source file inclusion (6.10.2), statements (6.8). @@ -2390,7 +2502,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

        If, within a translation unit, the same identifier appears with both internal and external linkage, the behavior is undefined. - Forward references: declarations (6.7), expressions (6.5), external definitions (6.9), +

        Forward references: declarations (6.7), expressions (6.5), external definitions (6.9), statements (6.8).

        footnotes
        @@ -2417,7 +2529,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      • all other identifiers, called ordinary identifiers (declared in ordinary declarators or as enumeration constants).
      - Forward references: enumeration specifiers (6.7.2.2), labeled statements (6.8.1), +

      Forward references: enumeration specifiers (6.7.2.2), labeled statements (6.8.1), structure and union specifiers (6.7.2.1), structure and union members (6.5.2.3), tags (6.7.2.3), the goto statement (6.8.6.1). @@ -2482,7 +2594,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 value of the expression. Its lifetime ends when the evaluation of the containing full expression or full declarator ends. Any attempt to modify an object with temporary lifetime results in undefined behavior. - Forward references: array declarators (6.7.6.2), compound literals (6.5.2.5), declarators +

      Forward references: array declarators (6.7.6.2), compound literals (6.5.2.5), declarators (6.7.6), function calls (6.5.2.2), initialization (6.7.9), statements (6.8).

      footnotes
      @@ -2527,7 +2639,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 An object declared as type signed char occupies the same amount of storage as a ''plain'' char object. A ''plain'' int object has the natural size suggested by the architecture of the execution environment (large enough to contain any value in the range - INT_MIN to INT_MAX as defined in the header <limits.h>). + INT_MIN to INT_MAX as defined in the header <limits.h>).

      For each of the signed integer types, there is a corresponding (but different) unsigned integer type (designated with the keyword unsigned) that uses the same amount of @@ -2694,7 +2806,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 function returning struct tag''. The array has length five and the function has a single parameter of type float. Its type category is array. - Forward references: compatible type and composite type (6.2.7), declarations (6.7). +

      Forward references: compatible type and composite type (6.2.7), declarations (6.7).

      footnotes

      37) A type may be incomplete or complete throughout an entire translation unit, or it may change states at @@ -2721,7 +2833,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Implementation-defined keywords shall have the form of an identifier reserved for any use as described in 7.1.3. -

      45) CHAR_MIN, defined in <limits.h>, will have one of the values 0 or SCHAR_MIN, and this can be +

      45) CHAR_MIN, defined in <limits.h>, will have one of the values 0 or SCHAR_MIN, and this can be used to distinguish the two options. Irrespective of the choice made, char is a separate type from the other two and is not compatible with either. @@ -2784,7 +2896,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Loads and stores of objects with atomic types are done with memory_order_seq_cst semantics. - Forward references: declarations (6.7), expressions (6.5), lvalues, arrays, and function +

      Forward references: declarations (6.7), expressions (6.5), lvalues, arrays, and function designators (6.3.2.1), order and consistency (7.17.3).

      footnotes
      @@ -2936,7 +3048,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 declaration of that identifier is visible,56) if the prior declaration specifies internal or external linkage, the type of the identifier at the later declaration becomes the composite type. - Forward references: array declarators (6.7.6.2). +

      Forward references: array declarators (6.7.6.2).

      EXAMPLE Given the following two file scope declarations:

      @@ -3010,7 +3122,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       

      Conversion of an operand value to a compatible type causes no change to the value or the representation. - Forward references: cast operators (6.5.4). +

      Forward references: cast operators (6.5.4).

      6.3.1 Arithmetic operands

      @@ -3056,7 +3168,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      The integer promotions preserve value including sign. As discussed earlier, whether a ''plain'' char is treated as signed is implementation-defined. - Forward references: enumeration specifiers (6.7.2.2), structure and union specifiers +

      Forward references: enumeration specifiers (6.7.2.2), structure and union specifiers (6.7.2.1).

      footnotes
      @@ -3232,8 +3344,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 function returning type''. - Forward references: address and indirection operators (6.5.3.2), assignment operators - (6.5.16), common definitions <stddef.h> (7.19), initialization (6.7.9), postfix +

      Forward references: address and indirection operators (6.5.3.2), assignment operators + (6.5.16), common definitions <stddef.h> (7.19), initialization (6.7.9), postfix increment and decrement operators (6.5.2.4), prefix increment and decrement operators (6.5.3.1), the sizeof operator (6.5.3.4), structure and union members (6.5.2.3). @@ -3300,7 +3412,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 type and back again; the result shall compare equal to the original pointer. If a converted pointer is used to call a function whose type is not compatible with the referenced type, the behavior is undefined. - Forward references: cast operators (6.5.4), equality operators (6.5.9), integer types +

      Forward references: cast operators (6.5.4), equality operators (6.5.9), integer types capable of holding object pointers (7.20.1.4), simple assignment (6.5.16.1). @@ -3309,7 +3421,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      footnotes
      -

      66) The macro NULL is defined in <stddef.h> (and other headers) as a null pointer constant; see 7.19. +

      66) The macro NULL is defined in <stddef.h> (and other headers) as a null pointer constant; see 7.19.

      67) The mapping functions for converting a pointer to an integer or an integer to a pointer are intended to be consistent with the addressing structure of the execution environment. @@ -3380,7 +3492,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 EXAMPLE 2 The program fragment x+++++y is parsed as x ++ ++ + y, which violates a constraint on increment operators, even though the parse x ++ + ++ y might yield a correct expression. - Forward references: character constants (6.4.4.4), comments (6.4.9), expressions (6.5), +

      Forward references: character constants (6.4.4.4), comments (6.4.9), expressions (6.5), floating constants (6.4.4.2), header names (6.4.7), macro replacement (6.10.3), postfix increment and decrement operators (6.5.2.4), prefix increment and decrement operators (6.5.3.1), preprocessing directives (6.10), preprocessing numbers (6.4.8), string literals @@ -3474,7 +3586,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Any identifiers that differ in a significant character are different identifiers. If two identifiers differ only in nonsignificant characters, the behavior is undefined. - Forward references: universal character names (6.4.3), macro replacement (6.10.3). +

      Forward references: universal character names (6.4.3), macro replacement (6.10.3).

      footnotes

      71) On systems in which linkers cannot accept extended characters, an encoding of the universal character @@ -3498,7 +3610,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      EXAMPLE Consider the code fragment:

      -          #include <stdio.h>
      +          #include <stdio.h>
                 void myfunc(void)
                 {
                       printf("%s\n", __func__);
      @@ -3508,7 +3620,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
                 myfunc
      - Forward references: function definitions (6.9.1). +

      Forward references: function definitions (6.9.1). @@ -3774,7 +3886,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Semantics

      An identifier declared as an enumeration constant has type int. - Forward references: enumeration specifiers (6.7.2.2). +

      Forward references: enumeration specifiers (6.7.2.2).

      6.4.4.4 Character constants
      Syntax
      @@ -3873,9 +3985,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 type int.

      A wide character constant prefixed by the letter L has type wchar_t, an integer type - defined in the <stddef.h> header; a wide character constant prefixed by the letter u or + defined in the <stddef.h> header; a wide character constant prefixed by the letter u or U has type char16_t or char32_t, respectively, unsigned integer types defined in the - <uchar.h> header. The value of a wide character constant containing a single + <uchar.h> header. The value of a wide character constant containing a single multibyte character that maps to a single member of the extended execution character set is the wide character corresponding to that multibyte character, as defined by the mbtowc, mbrtoc16, or mbrtoc32 function as appropriate for its type, with an @@ -3910,8 +4022,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 L'\1234' specifies the implementation-defined value that results from the combination of the values 0123 and '4'. - Forward references: common definitions <stddef.h> (7.19), the mbtowc function - (7.22.7.2), Unicode utilities <uchar.h> (7.27). +

      Forward references: common definitions <stddef.h> (7.19), the mbtowc function + (7.22.7.2), Unicode utilities <uchar.h> (7.27).

      footnotes

      77) The semantics of these characters were discussed in 5.2.2. If any other character follows a backslash, @@ -4015,8 +4127,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 u"abc"
      - Forward references: common definitions <stddef.h> (7.19), the mbstowcs - function (7.22.8.1), Unicode utilities <uchar.h> (7.27). +

      Forward references: common definitions <stddef.h> (7.19), the mbstowcs + function (7.22.8.1), Unicode utilities <uchar.h> (7.27).

      footnotes

      78) A string literal need not be a string (see 7.1.1), because a null character may be embedded in it by a @@ -4051,7 +4163,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 [     ]       {     }      #      ##
      except for their spelling.80) - Forward references: expressions (6.5), declarations (6.7), preprocessing directives +

      Forward references: expressions (6.5), declarations (6.7), preprocessing directives (6.10), statements (6.8).

      footnotes
      @@ -4108,7 +4220,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 {#}{include} {<1/a.h>} {#}{define} {const}{.}{member}{@}{$}
      - Forward references: source file inclusion (6.10.2). +

      Forward references: source file inclusion (6.10.2).

      footnotes

      81) Thus, sequences of characters that resemble escape sequences cause undefined behavior. @@ -4238,10 +4350,10 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      A floating expression may be contracted, that is, evaluated as though it were a single operation, thereby omitting rounding errors implied by the source code and the - expression evaluation method.89) The FP_CONTRACT pragma in <math.h> provides a + expression evaluation method.89) The FP_CONTRACT pragma in <math.h> provides a way to disallow contracted expressions. Otherwise, whether and how expressions are contracted is implementation-defined.90) - Forward references: the FP_CONTRACT pragma (7.12.2), copying functions (7.23.2). +

      Forward references: the FP_CONTRACT pragma (7.12.2), copying functions (7.23.2). @@ -4312,7 +4424,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 those of the unparenthesized expression. It is an lvalue, a function designator, or a void expression if the unparenthesized expression is, respectively, an lvalue, a function designator, or a void expression. - Forward references: declarations (6.7). +

      Forward references: declarations (6.7).

      footnotes

      91) Thus, an undeclared identifier is a violation of the syntax. @@ -4415,7 +4527,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 expression x[i][j], that array is in turn converted to a pointer to the first of the ints, so x[i][j] yields an int. - Forward references: additive operators (6.5.6), address and indirection operators +

      Forward references: additive operators (6.5.6), address and indirection operators (6.5.3.2), array declarators (6.7.6.2).

      6.5.2.2 Function calls
      @@ -4496,7 +4608,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 the functions f1, f2, f3, and f4 may be called in any order. All side effects have to be completed before the function pointed to by pf[f1()] is called. - Forward references: function declarators (including prototypes) (6.7.6.3), function +

      Forward references: function declarators (including prototypes) (6.7.6.3), function definitions (6.9.1), the return statement (6.8.6.4), simple assignment (6.5.16.1).

      footnotes
      @@ -4610,7 +4722,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 return f(&u.s1, &u.s2); }
      - Forward references: address and indirection operators (6.5.3.2), structure and union +

      Forward references: address and indirection operators (6.5.3.2), structure and union specifiers (6.7.2.1). @@ -4648,7 +4760,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 The postfix -- operator is analogous to the postfix ++ operator, except that the value of the operand is decremented (that is, the value 1 of the appropriate type is subtracted from it). - Forward references: additive operators (6.5.6), compound assignment (6.5.16.2). +

      Forward references: additive operators (6.5.6), compound assignment (6.5.16.2).

      footnotes

      98) Where a pointer to an atomic object can be formed, this is equivalent to the following code sequence @@ -4781,7 +4893,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 lifetime of the unnamed object would be the body of the loop only, and on entry next time around p would have an indeterminate value, which would result in undefined behavior. - Forward references: type names (6.7.7), initialization (6.7.9). +

      Forward references: type names (6.7.7), initialization (6.7.9).

      footnotes
      @@ -4823,7 +4935,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      The prefix -- operator is analogous to the prefix ++ operator, except that the value of the operand is decremented. - Forward references: additive operators (6.5.6), compound assignment (6.5.16.2). +

      Forward references: additive operators (6.5.6), compound assignment (6.5.16.2).

      6.5.3.2 Address and indirection operators
      Constraints
      @@ -4850,7 +4962,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 object. If the operand has type ''pointer to type'', the result has type ''type''. If an invalid value has been assigned to the pointer, the behavior of the unary * operator is undefined.102) - Forward references: storage-class specifiers (6.7.1), structure and union specifiers +

      Forward references: storage-class specifiers (6.7.1), structure and union specifiers (6.7.2.1).

      footnotes
      @@ -4916,7 +5028,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 bytes in such an object, including internal and trailing padding.

      The value of the result of both operators is implementation-defined, and its type (an - unsigned integer type) is size_t, defined in <stddef.h> (and other headers). + unsigned integer type) is size_t, defined in <stddef.h> (and other headers).

      EXAMPLE 1 A principal use of the sizeof operator is in communication with routines such as storage allocators and I/O systems. A storage-allocation function might accept a size (in bytes) of an object to @@ -4936,7 +5048,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 EXAMPLE 3 In this example, the size of a variable length array is computed and returned from a function:

      -         #include <stddef.h>
      + #include <stddef.h>
    @@ -4954,7 +5066,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 return 0; }
    - Forward references: common definitions <stddef.h> (7.19), declarations (6.7), +

    Forward references: common definitions <stddef.h> (7.19), declarations (6.7), structure and union specifiers (6.7.2.1), type names (6.7.7), array declarators (6.7.6.2).

    footnotes
    @@ -4989,7 +5101,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 by the type named by the cast (6.3.1.8), then the cast specifies a conversion even if the type of the expression is the same as the named type and removes any extra range and precision. - Forward references: equality operators (6.5.9), function declarators (including +

    Forward references: equality operators (6.5.9), function declarators (including prototypes) (6.7.6.3), simple assignment (6.5.16.1), type names (6.7.7). @@ -5092,7 +5204,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 When two pointers are subtracted, both shall point to elements of the same array object, or one past the last element of the array object; the result is the difference of the subscripts of the two array elements. The size of the result is implementation-defined, - and its type (a signed integer type) is ptrdiff_t defined in the <stddef.h> header. + and its type (a signed integer type) is ptrdiff_t defined in the <stddef.h> header. If the result is not representable in an object of that type, the behavior is undefined. In other words, if the expressions P and Q point to, respectively, the i-th and j-th elements of an array object, the expression (P)-(Q) has the value i-j provided the value fits in an @@ -5119,7 +5231,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 declared to be a pointer to an array of the same known constant size (pointing to a), the results would be the same. - Forward references: array declarators (6.7.6.2), common definitions <stddef.h> +

    Forward references: array declarators (6.7.6.2), common definitions <stddef.h> (7.19).

    footnotes
    @@ -5616,7 +5728,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 f(a, (t=3, t+2), c)
    the function has three arguments, the second of which has the value 5. - Forward references: initialization (6.7.9). +

    Forward references: initialization (6.7.9). @@ -5691,7 +5803,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    The semantic rules for the evaluation of a constant expression are the same as for nonconstant expressions.118) - Forward references: array declarators (6.7.6.2), initialization (6.7.9). +

    Forward references: array declarators (6.7.6.2), initialization (6.7.9). @@ -5773,7 +5885,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 complete by the end of its declarator, or by the end of its init-declarator if it has an initializer; in the case of function parameters (including in prototypes), it is the adjusted type (see 6.7.6.3) that is required to be complete. - Forward references: declarators (6.7.6), enumeration specifiers (6.7.2.2), initialization +

    Forward references: declarators (6.7.6), enumeration specifiers (6.7.2.2), initialization (6.7.9), type names (6.7.7), type qualifiers (6.7.3).

    footnotes
    @@ -5821,7 +5933,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 typedef, the properties resulting from the storage-class specifier, except with respect to linkage, also apply to the members of the object, and so on recursively for any aggregate or union member objects. - Forward references: type definitions (6.7.8). +

    Forward references: type definitions (6.7.8).

    footnotes

    120) See ''future language directions'' (6.11.5). @@ -5903,7 +6015,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Each of the comma-separated multisets designates the same type, except that for bit- fields, it is implementation-defined whether the specifier int designates the same type as signed int or the same type as unsigned int. - Forward references: atomic type specifiers (6.7.2.4), enumeration specifiers (6.7.2.2), +

    Forward references: atomic type specifiers (6.7.2.4), enumeration specifiers (6.7.2.2), structure and union specifiers (6.7.2.1), tags (6.7.2.3), type definitions (6.7.8).

    6.7.2.1 Structure and union specifiers
    @@ -6115,7 +6227,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 only copies the member n; if any of the array elements are within the first sizeof (struct s) bytes of the structure, they might be copied or simply overwritten with indeterminate values. - Forward references: declarators (6.7.6), tags (6.7.2.3). +

    Forward references: declarators (6.7.6), tags (6.7.2.3).

    footnotes
    @@ -6186,7 +6298,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 makes hue the tag of an enumeration, and then declares col as an object that has that type and cp as a pointer to an object that has that type. The enumerated values are in the set { 0, 1, 20, 21 }. - Forward references: tags (6.7.2.3). +

    Forward references: tags (6.7.2.3).

    footnotes

    127) Thus, the identifiers of enumeration constants declared in the same scope shall all be distinct from @@ -6303,7 +6415,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 may be inserted ahead of D1. This declares a new tag s2 in the inner scope; the declaration D2 then completes the specification of the new type. - Forward references: declarators (6.7.6), type definitions (6.7.8). +

    Forward references: declarators (6.7.6), type definitions (6.7.8).

    footnotes

    129) An incomplete type may only by used when the size of an object of that type is not needed. It is not @@ -6654,7 +6766,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 if (i > 0) abort(); }

    - Forward references: function definitions (6.9.1). +

    Forward references: function definitions (6.9.1).

    footnotes

    138) By using, for example, an alternative to the usual function call mechanism, such as ''inline @@ -6786,7 +6898,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 As discussed in 5.2.4.1, an implementation may limit the number of pointer, array, and function declarators that modify an arithmetic, structure, union, or void type, either directly or via one or more typedefs. - Forward references: array declarators (6.7.6.2), type definitions (6.7.8). +

    Forward references: array declarators (6.7.6.2), type definitions (6.7.8).

    6.7.6.1 Pointer declarators
    Semantics
    @@ -6932,7 +7044,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 static int (*q)[m] = &B; // valid: q is a static block pointer to VLA }
    - Forward references: function declarators (6.7.6.3), function definitions (6.9.1), +

    Forward references: function declarators (6.7.6.3), function definitions (6.9.1), initialization (6.7.9).

    footnotes
    @@ -7095,11 +7207,11 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 (Note that the last declaration also specifies that the argument corresponding to a in any call to f must be a non-null pointer to the first of at least three arrays of 5 doubles, which the others do not.) - Forward references: function definitions (6.9.1), type names (6.7.7). +

    Forward references: function definitions (6.9.1), type names (6.7.7).

    footnotes
    -

    144) The macros defined in the <stdarg.h> header (7.16) may be used to access arguments that +

    144) The macros defined in the <stdarg.h> header (7.16) may be used to access arguments that correspond to the ellipsis.

    145) See ''future language directions'' (6.11.6). @@ -7396,7 +7508,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 respect to one another and thus the order in which any side effects occur is unspecified.152)

    - EXAMPLE 1 Provided that <complex.h> has been #included, the declarations + EXAMPLE 1 Provided that <complex.h> has been #included, the declarations

               int i = 3.5;
               double complex c = 5 + 3 * I;
    @@ -7554,7 +7666,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
               union { /* ... */ } u = { .any_member = 42 };
    - Forward references: common definitions <stddef.h> (7.19). +

    Forward references: common definitions <stddef.h> (7.19).

    footnotes
    @@ -7590,7 +7702,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 constraint is violated and the implementation shall produce a diagnostic message that includes the text of the string literal, except that characters not in the basic source character set are not required to appear in the message. - Forward references: diagnostics (7.2). +

    Forward references: diagnostics (7.2).

    6.8 Statements and blocks

    @@ -7623,7 +7735,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 of the (optional) expressions of a for statement; the (optional) expression in a return statement. There is a sequence point between the evaluation of a full expression and the evaluation of the next full expression to be evaluated. - Forward references: expression and null statements (6.8.3), selection statements +

    Forward references: expression and null statements (6.8.3), selection statements (6.8.4), iteration statements (6.8.5), the return statement (6.8.6.4).

    6.8.1 Labeled statements

    @@ -7646,7 +7758,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Any statement may be preceded by a prefix that declares an identifier as a label name. Labels in themselves do not alter the flow of control, which continues unimpeded across them. - Forward references: the goto statement (6.8.6.1), the switch statement (6.8.4.2). +

    Forward references: the goto statement (6.8.6.1), the switch statement (6.8.4.2).

    6.8.2 Compound statement

    Syntax
    @@ -7713,7 +7825,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 end_loop1: ; }
    - Forward references: iteration statements (6.8.5). +

    Forward references: iteration statements (6.8.5).

    footnotes

    153) Such as assignments, and function calls which have side effects. @@ -8415,7 +8527,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 expression which is evaluated according to the rules of 6.6. For the purposes of this token conversion and evaluation, all signed integer types and all unsigned integer types act as if they have the same representation as, respectively, the types intmax_t and - uintmax_t defined in the header <stdint.h>.167) This includes interpreting + uintmax_t defined in the header <stdint.h>.167) This includes interpreting character constants, which may involve converting escape sequences into execution character set members. Whether the numeric value for these character constants matches the value obtained when an identical character constant occurs in an expression (other @@ -8443,7 +8555,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 processed. If none of the conditions evaluates to true, and there is a #else directive, the group controlled by the #else is processed; lacking a #else directive, all the groups until the #endif are skipped.169) - Forward references: macro replacement (6.10.3), source file inclusion (6.10.2), largest +

    Forward references: macro replacement (6.10.3), source file inclusion (6.10.2), largest integer types (7.20.1.5).

    footnotes
    @@ -8517,7 +8629,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    EXAMPLE 1 The most common uses of #include preprocessing directives are as in the following:

    -          #include <stdio.h>
    +          #include <stdio.h>
               #include "myprog.h"
    @@ -8536,7 +8648,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 #endif #include INCFILE
    - Forward references: macro replacement (6.10.3). +

    Forward references: macro replacement (6.10.3).

    footnotes

    170) Note that adjacent string literals are not concatenated into a single string literal (see the translation @@ -8948,7 +9060,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 #pragma STDC CX_LIMITED_RANGE on-off-switch on-off-switch: one of ON OFF DEFAULT

    - Forward references: the FP_CONTRACT pragma (7.12.2), the FENV_ACCESS pragma +

    Forward references: the FP_CONTRACT pragma (7.12.2), the FENV_ACCESS pragma (7.6.1), the CX_LIMITED_RANGE pragma (7.3.4). @@ -8986,7 +9098,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    The implementation shall not predefine the macro __cplusplus, nor shall it define it in any standard header. - Forward references: standard headers (7.1.2). +

    Forward references: standard headers (7.1.2).

    footnotes

    176) See ''future language directions'' (6.11.9). @@ -9021,7 +9133,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 string literal of the form "hh:mm:ss" as in the time generated by the asctime function. If the time of translation is not available, an implementation-defined valid time shall be supplied.

    - Forward references: the asctime function (7.26.3.1). +

    Forward references: the asctime function (7.26.3.1).

    footnotes

    177) The presumed source file name and line number can be changed by the #line directive. @@ -9059,7 +9171,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 char32_t are UTF-32 encoded. If some other encoding is used, the macro shall not be defined and the actual encoding used is implementation- defined.

    - Forward references: common definitions (7.19), unicode utilities (7.27). +

    Forward references: common definitions (7.19), unicode utilities (7.27). @@ -9084,12 +9196,12 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 for the extensions defined in annex K (Bounds-checking interfaces).179)

    __STDC_NO_COMPLEX__ The integer constant 1, intended to indicate that the
    -           implementation does not support complex types or the <complex.h>
    +           implementation does not support complex types or the <complex.h>
                header.
    __STDC_NO_THREADS__ The integer constant 1, intended to indicate that the
                implementation does not support atomic types (including the _Atomic
    -           type qualifier and the <stdatomic.h> header) or the <threads.h>
    +           type qualifier and the <stdatomic.h> header) or the <threads.h>
                header.
    __STDC_NO_VLA__ The integer constant 1, intended to indicate that the

    @@ -9212,7 +9324,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 (potentially) causes a change in shift state (see 5.2.1.2). A shift sequence shall not have a corresponding wide character; it is instead taken to be an adjunct to an adjacent multibyte character.181) - Forward references: character handling (7.4), the setlocale function (7.11.1.1). +

    Forward references: character handling (7.4), the setlocale function (7.11.1.1). @@ -9240,20 +9352,20 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 The standard headers are183)

    -        <assert.h>             <iso646.h>              <stdarg.h>              <string.h>
    -        <complex.h>            <limits.h>              <stdatomic.h>           <tgmath.h>
    -        <ctype.h>              <locale.h>              <stdbool.h>             <threads.h>
    -        <errno.h>              <math.h>                <stddef.h>              <time.h>
    -        <fenv.h>               <setjmp.h>              <stdint.h>              <uchar.h>
    -        <float.h>              <signal.h>              <stdio.h>               <wchar.h>
    -        <inttypes.h>           <stdalign.h>            <stdlib.h>              <wctype.h>
    + <assert.h> <iso646.h> <stdarg.h> <string.h> + <complex.h> <limits.h> <stdatomic.h> <tgmath.h> + <ctype.h> <locale.h> <stdbool.h> <threads.h> + <errno.h> <math.h> <stddef.h> <time.h> + <fenv.h> <setjmp.h> <stdint.h> <uchar.h> + <float.h> <signal.h> <stdio.h> <wchar.h> + <inttypes.h> <stdalign.h> <stdlib.h> <wctype.h>
    If a file with the same name as one of the above < and > delimited sequences, not provided as part of the implementation, is placed in any of the standard places that are searched for included source files, the behavior is undefined.

    Standard headers may be included in any order; each may be included more than once in a given scope, with no effect different from being included only once, except that the - effect of including <assert.h> depends on the definition of NDEBUG (see 7.2). If + effect of including <assert.h> depends on the definition of NDEBUG (see 7.2). If used, a header shall be included outside of any external declaration or definition, and it shall first be included before the first reference to any of the functions or objects it declares, or to any of the types or macros it defines. However, if an identifier is declared @@ -9274,13 +9386,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    A summary of the contents of the standard headers is given in annex B. - Forward references: diagnostics (7.2). +

    Forward references: diagnostics (7.2).

    footnotes

    182) A header is not necessarily a source file, nor are the < and > delimited sequences in header names necessarily valid source file names. -

    183) The headers <complex.h>, <stdatomic.h>, and <threads.h> are conditional features that +

    183) The headers <complex.h>, <stdatomic.h>, and <threads.h> are conditional features that implementations need not support; see 6.10.8.3. @@ -9379,7 +9491,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    • by use of its associated header (possibly generating a macro expansion)
      -            #include <stdlib.h>
      +            #include <stdlib.h>
                   const char *str;
                   /* ... */
                   i = atoi(str);
      @@ -9390,14 +9502,14 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      -           #include <stdlib.h>
      +           #include <stdlib.h>
                  #undef atoi
                  const char *str;
                  /* ... */
                  i = atoi(str);
      or
      -           #include <stdlib.h>
      +           #include <stdlib.h>
                  const char *str;
                  /* ... */
                  i = (atoi)(str);
      @@ -9444,17 +9556,17 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.2 Diagnostics

      - The header <assert.h> defines the assert and static_assert macros and + The header <assert.h> defines the assert and static_assert macros and refers to another macro,

                NDEBUG
      - which is not defined by <assert.h>. If NDEBUG is defined as a macro name at the - point in the source file where <assert.h> is included, the assert macro is defined + which is not defined by <assert.h>. If NDEBUG is defined as a macro name at the + point in the source file where <assert.h> is included, the assert macro is defined simply as
                #define assert(ignore) ((void)0)
      The assert macro is redefined according to the current state of NDEBUG each time that - <assert.h> is included. + <assert.h> is included.

      The assert macro shall be implemented as a macro, not as an actual function. If the macro definition is suppressed in order to access an actual function, the behavior is @@ -9471,7 +9583,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <assert.h>
      +         #include <assert.h>
                void assert(scalar expression);
      Description

      @@ -9490,7 +9602,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Returns

      The assert macro returns no value. - Forward references: the abort function (7.22.4.1). +

      Forward references: the abort function (7.22.4.1).

      footnotes
      @@ -9502,7 +9614,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.3.1 Introduction

      - The header <complex.h> defines macros and declares functions that support complex + The header <complex.h> defines macros and declares functions that support complex arithmetic.192)

      Implementations that define the macro __STDC_NO_COMPLEX__ need not provide @@ -9542,7 +9654,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 redefine the macros complex, imaginary, and I. - Forward references: IEC 60559-compatible complex arithmetic (annex G). +

      Forward references: IEC 60559-compatible complex arithmetic (annex G).

      footnotes

      192) See ''future library directions'' (7.30.1). @@ -9580,7 +9692,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -        #include <complex.h>
      +        #include <complex.h>
               #pragma STDC CX_LIMITED_RANGE on-off-switch
      Description

      @@ -9617,7 +9729,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <complex.h>
      +         #include <complex.h>
                double complex cacos(double complex z);
                float complex cacosf(float complex z);
                long double complex cacosl(long double complex z);
      @@ -9635,7 +9747,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <complex.h>
      +         #include <complex.h>
                double complex casin(double complex z);
                float complex casinf(float complex z);
                long double complex casinl(long double complex z);
      @@ -9655,7 +9767,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <complex.h>
      +        #include <complex.h>
               double complex catan(double complex z);
               float complex catanf(float complex z);
               long double complex catanl(long double complex z);
      @@ -9673,7 +9785,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <complex.h>
      +        #include <complex.h>
               double complex ccos(double complex z);
               float complex ccosf(float complex z);
               long double complex ccosl(long double complex z);
      @@ -9688,7 +9800,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <complex.h>
      +        #include <complex.h>
               double complex csin(double complex z);
               float complex csinf(float complex z);
               long double complex csinl(long double complex z);
      @@ -9704,7 +9816,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <complex.h>
      +         #include <complex.h>
                double complex ctan(double complex z);
                float complex ctanf(float complex z);
                long double complex ctanl(long double complex z);
      @@ -9721,7 +9833,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <complex.h>
      +         #include <complex.h>
                double complex cacosh(double complex z);
                float complex cacoshf(float complex z);
                long double complex cacoshl(long double complex z);
      @@ -9740,7 +9852,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      -         #include <complex.h>
      +         #include <complex.h>
                double complex casinh(double complex z);
                float complex casinhf(float complex z);
                long double complex casinhl(long double complex z);
      @@ -9758,7 +9870,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <complex.h>
      +        #include <complex.h>
               double complex catanh(double complex z);
               float complex catanhf(float complex z);
               long double complex catanhl(long double complex z);
      @@ -9776,7 +9888,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <complex.h>
      +        #include <complex.h>
               double complex ccosh(double complex z);
               float complex ccoshf(float complex z);
               long double complex ccoshl(long double complex z);
      @@ -9792,7 +9904,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <complex.h>
      +         #include <complex.h>
                double complex csinh(double complex z);
                float complex csinhf(float complex z);
                long double complex csinhl(long double complex z);
      @@ -9807,7 +9919,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <complex.h>
      +         #include <complex.h>
                double complex ctanh(double complex z);
                float complex ctanhf(float complex z);
                long double complex ctanhl(long double complex z);
      @@ -9824,7 +9936,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <complex.h>
      +         #include <complex.h>
                double complex cexp(double complex z);
                float complex cexpf(float complex z);
                long double complex cexpl(long double complex z);
      @@ -9840,7 +9952,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <complex.h>
      +        #include <complex.h>
               double complex clog(double complex z);
               float complex clogf(float complex z);
               long double complex clogl(long double complex z);
      @@ -9860,7 +9972,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <complex.h>
      +        #include <complex.h>
               double cabs(double complex z);
               float cabsf(float complex z);
               long double cabsl(long double complex z);
      @@ -9877,7 +9989,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      -        #include <complex.h>
      +        #include <complex.h>
               double complex cpow(double complex x, double complex y);
               float complex cpowf(float complex x, float complex y);
               long double complex cpowl(long double complex x,
      @@ -9894,7 +10006,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
      Synopsis

      -         #include <complex.h>
      +         #include <complex.h>
                double complex csqrt(double complex z);
                float complex csqrtf(float complex z);
                long double complex csqrtl(long double complex z);
      @@ -9913,7 +10025,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <complex.h>
      +         #include <complex.h>
                double carg(double complex z);
                float cargf(float complex z);
                long double cargl(long double complex z);
      @@ -9930,7 +10042,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <complex.h>
      +        #include <complex.h>
               double cimag(double complex z);
               float cimagf(float complex z);
               long double cimagl(long double complex z);
      @@ -9949,7 +10061,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <complex.h>
      +        #include <complex.h>
               double complex CMPLX(double x, double y);
               float complex CMPLXF(float x, float y);
               long double complex CMPLXL(long double x, long double y);
      @@ -9984,7 +10096,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <complex.h>
      +         #include <complex.h>
                double complex conj(double complex z);
                float complex conjf(float complex z);
                long double complex conjl(long double complex z);
      @@ -10000,7 +10112,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <complex.h>
      +         #include <complex.h>
                double complex cproj(double complex z);
                float complex cprojf(float complex z);
                long double complex cprojl(long double complex z);
      @@ -10020,7 +10132,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <complex.h>
      +         #include <complex.h>
                double creal(double complex z);
                float crealf(float complex z);
                long double creall(long double complex z);
      @@ -10043,7 +10155,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.4 Character handling

      - The header <ctype.h> declares several functions useful for classifying and mapping + The header <ctype.h> declares several functions useful for classifying and mapping characters.198) In all cases the argument is an int, the value of which shall be representable as an unsigned char or shall equal the value of the macro EOF. If the argument has any other value, the behavior is undefined. @@ -10055,7 +10167,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 of which occupies one printing position on a display device; the term control character refers to a member of a locale-specific set of characters that are not printing characters.199) All letters and digits are printing characters. - Forward references: EOF (7.21.1), localization (7.11). +

      Forward references: EOF (7.21.1), localization (7.11).

      footnotes

      198) See ''future library directions'' (7.30.2). @@ -10074,7 +10186,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -          #include <ctype.h>
      +          #include <ctype.h>
                 int isalnum(int c);
      Description

      @@ -10084,7 +10196,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -          #include <ctype.h>
      +          #include <ctype.h>
                 int isalpha(int c);
      Description

      @@ -10106,7 +10218,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <ctype.h>
      +         #include <ctype.h>
                int isblank(int c);
      Description

      @@ -10120,7 +10232,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <ctype.h>
      +         #include <ctype.h>
                int iscntrl(int c);
      Description

      @@ -10130,7 +10242,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <ctype.h>
      +         #include <ctype.h>
                int isdigit(int c);
      Description

      @@ -10140,7 +10252,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <ctype.h>
      +         #include <ctype.h>
                int isgraph(int c);
      @@ -10155,7 +10267,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <ctype.h>
      +         #include <ctype.h>
                int islower(int c);
      Description

      @@ -10168,7 +10280,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <ctype.h>
      +         #include <ctype.h>
                int isprint(int c);
      Description

      @@ -10178,7 +10290,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <ctype.h>
      +         #include <ctype.h>
                int ispunct(int c);
      Description

      @@ -10191,7 +10303,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <ctype.h>
      +         #include <ctype.h>
                int isspace(int c);
      Description

      @@ -10206,7 +10318,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -        #include <ctype.h>
      +        #include <ctype.h>
               int isupper(int c);
      Description

      @@ -10219,7 +10331,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -        #include <ctype.h>
      +        #include <ctype.h>
               int isxdigit(int c);
      Description

      @@ -10231,7 +10343,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -        #include <ctype.h>
      +        #include <ctype.h>
               int tolower(int c);
      Description

      @@ -10248,7 +10360,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <ctype.h>
      +         #include <ctype.h>
                int toupper(int c);
      Description

      @@ -10263,7 +10375,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.5 Errors

      - The header <errno.h> defines several macros, all relating to the reporting of error + The header <errno.h> defines several macros, all relating to the reporting of error conditions.

      The macros are @@ -10308,7 +10420,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.6 Floating-point environment

      - The header <fenv.h> defines several macros, and declares types and functions that + The header <fenv.h> defines several macros, and declares types and functions that provide access to the floating-point environment. The floating-point environment refers collectively to any floating-point status flags and control modes supported by the implementation.204) A floating-point status flag is a system variable whose value is set @@ -10392,7 +10504,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      • and has type ''pointer to const-qualified fenv_t''. It can be used as an argument to
      - <fenv.h> functions that manage the floating-point environment. + <fenv.h> functions that manage the floating-point environment.

      Additional implementation-defined environments, with macro definitions beginning with FE_ and an uppercase letter, and having type ''pointer to const-qualified fenv_t'', may @@ -10423,7 +10535,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -          #include <fenv.h>
      +          #include <fenv.h>
                 #pragma STDC FENV_ACCESS on-off-switch
      Description

      @@ -10454,7 +10566,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 EXAMPLE

      -         #include <fenv.h>
      +         #include <fenv.h>
                void f(double x)
                {
                      #pragma STDC FENV_ACCESS ON
      @@ -10501,7 +10613,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
      Synopsis

      -         #include <fenv.h>
      +         #include <fenv.h>
                int feclearexcept(int excepts);
      Description

      @@ -10519,7 +10631,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -          #include <fenv.h>
      +          #include <fenv.h>
                 int fegetexceptflag(fexcept_t *flagp,
                      int excepts);
      Description
      @@ -10536,7 +10648,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -          #include <fenv.h>
      +          #include <fenv.h>
                 int feraiseexcept(int excepts);
      Description

      @@ -10565,7 +10677,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <fenv.h>
      +         #include <fenv.h>
                int fesetexceptflag(const fexcept_t *flagp,
                     int excepts);
      Description
      @@ -10586,7 +10698,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <fenv.h>
      +         #include <fenv.h>
                int fetestexcept(int excepts);
      Description

      @@ -10606,7 +10718,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      -         #include <fenv.h>
      +         #include <fenv.h>
                /* ... */
                {
                        #pragma STDC FENV_ACCESS ON
      @@ -10633,7 +10745,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
      Synopsis

      -         #include <fenv.h>
      +         #include <fenv.h>
                int fegetround(void);
      Description

      @@ -10648,7 +10760,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <fenv.h>
      +         #include <fenv.h>
                int fesetround(int round);
      Description

      @@ -10664,8 +10776,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 EXAMPLE Save, set, and restore the rounding direction. Report an error and abort if setting the rounding direction fails.

      -        #include <fenv.h>
      -        #include <assert.h>
      +        #include <fenv.h>
      +        #include <assert.h>
               void f(int round_dir)
               {
                     #pragma STDC FENV_ACCESS ON
      @@ -10689,7 +10801,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
      Synopsis

      -        #include <fenv.h>
      +        #include <fenv.h>
               int fegetenv(fenv_t *envp);
      Description

      @@ -10704,7 +10816,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -        #include <fenv.h>
      +        #include <fenv.h>
               int feholdexcept(fenv_t *envp);
      Description

      @@ -10729,7 +10841,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <fenv.h>
      +         #include <fenv.h>
                int fesetenv(const fenv_t *envp);
      Description

      @@ -10747,7 +10859,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <fenv.h>
      +         #include <fenv.h>
                int feupdateenv(const fenv_t *envp);
      Description

      @@ -10769,7 +10881,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 EXAMPLE Hide spurious underflow floating-point exceptions:

      -       #include <fenv.h>
      +       #include <fenv.h>
              double f(double x)
              {
                    #pragma STDC FENV_ACCESS ON
      @@ -10788,7 +10900,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
       

      7.7 Characteristics of floating types

      - The header <float.h> defines several macros that expand to various limits and + The header <float.h> defines several macros that expand to various limits and parameters of the standard floating-point types.

      The macros, their meanings, and the constraints (or restrictions) on their values are listed @@ -10797,7 +10909,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.8 Format conversion of integer types

      - The header <inttypes.h> includes the header <stdint.h> and extends it with + The header <inttypes.h> includes the header <stdint.h> and extends it with additional facilities provided by hosted implementations.

      It declares functions for manipulating greatest-width integers and converting numeric @@ -10805,9 +10917,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 imaxdiv_t
      which is a structure type that is the type of the value returned by the imaxdiv function. - For each type declared in <stdint.h>, it defines corresponding macros for conversion + For each type declared in <stdint.h>, it defines corresponding macros for conversion specifiers for use with the formatted input/output functions.216) - Forward references: integer types <stdint.h> (7.20), formatted input/output +

      Forward references: integer types <stdint.h> (7.20), formatted input/output functions (7.21.6), formatted wide character input/output functions (7.28.2).

      footnotes
      @@ -10853,15 +10965,15 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 SCNoN SCNoLEASTN SCNoFASTN SCNoMAX SCNoPTR SCNuN SCNuLEASTN SCNuFASTN SCNuMAX SCNuPTR SCNxN SCNxLEASTN SCNxFASTN SCNxMAX SCNxPTR
      - For each type that the implementation provides in <stdint.h>, the corresponding + For each type that the implementation provides in <stdint.h>, the corresponding fprintf macros shall be defined and the corresponding fscanf macros shall be defined unless the implementation does not have a suitable fscanf length modifier for the type.

      EXAMPLE

      -         #include <inttypes.h>
      -         #include <wchar.h>
      +         #include <inttypes.h>
      +         #include <wchar.h>
                int main(void)
                {
                      uintmax_t i = UINTMAX_MAX;    // this type always exists
      @@ -10883,7 +10995,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
      Synopsis

      -         #include <inttypes.h>
      +         #include <inttypes.h>
                intmax_t imaxabs(intmax_t j);
      Description

      @@ -10906,7 +11018,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -        #include <inttypes.h>
      +        #include <inttypes.h>
               imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom);
      Description

      @@ -10923,7 +11035,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -        #include <inttypes.h>
      +        #include <inttypes.h>
               intmax_t strtoimax(const char * restrict nptr,
                    char ** restrict endptr, int base);
               uintmax_t strtoumax(const char * restrict nptr,
      @@ -10940,7 +11052,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
        of representable values, INTMAX_MAX, INTMAX_MIN, or UINTMAX_MAX is returned
        (according to the return type and sign of the value, if any), and the value of the macro
        ERANGE is stored in errno.
      - Forward references: the strtol, strtoll, strtoul, and strtoull functions
      +

      Forward references: the strtol, strtoll, strtoul, and strtoull functions (7.22.1.4). @@ -10948,8 +11060,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <stddef.h>           // for wchar_t
      -         #include <inttypes.h>
      +         #include <stddef.h>           // for wchar_t
      +         #include <inttypes.h>
                intmax_t wcstoimax(const wchar_t * restrict nptr,
                     wchar_t ** restrict endptr, int base);
                uintmax_t wcstoumax(const wchar_t * restrict nptr,
      @@ -10966,13 +11078,13 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
        values, INTMAX_MAX, INTMAX_MIN, or UINTMAX_MAX is returned (according to the
        return type and sign of the value, if any), and the value of the macro ERANGE is stored in
        errno.
      - Forward references: the wcstol, wcstoll, wcstoul, and wcstoull functions
      +

      Forward references: the wcstol, wcstoll, wcstoul, and wcstoull functions (7.28.4.1.2).

      7.9 Alternative spellings

      - The header <iso646.h> defines the following eleven macros (on the left) that expand + The header <iso646.h> defines the following eleven macros (on the left) that expand to the corresponding tokens (on the right):

      @@ -10990,7 +11102,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
       

      7.10 Sizes of integer types

      - The header <limits.h> defines several macros that expand to various limits and + The header <limits.h> defines several macros that expand to various limits and parameters of the standard integer types.

      The macros, their meanings, and the constraints (or restrictions) on their values are listed @@ -10999,7 +11111,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.11 Localization

      - The header <locale.h> declares two functions, one type, and defines several macros. + The header <locale.h> declares two functions, one type, and defines several macros.

      The type is

      @@ -11060,7 +11172,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
      Synopsis

      -          #include <locale.h>
      +          #include <locale.h>
                 char *setlocale(int category, const char *locale);
      Description

      @@ -11106,7 +11218,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 with that string value and its associated category will restore that part of the program's locale. The string pointed to shall not be modified by the program, but may be overwritten by a subsequent call to the setlocale function. - Forward references: formatted input/output functions (7.21.6), multibyte/wide +

      Forward references: formatted input/output functions (7.21.6), multibyte/wide character conversion functions (7.22.7), multibyte/wide string conversion functions (7.22.8), numeric conversion functions (7.22.1), the strcoll function (7.23.4.3), the strftime function (7.26.3.5), the strxfrm function (7.23.4.5). @@ -11125,7 +11237,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <locale.h>
      +         #include <locale.h>
                struct lconv *localeconv(void);
      Description

      @@ -11353,7 +11465,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.12 Mathematics

      - The header <math.h> declares two types and many mathematical functions and defines + The header <math.h> declares two types and many mathematical functions and defines several macros. Most synopses specify a family of functions consisting of a principal function with one or more double parameters, a double return value, or both; and other functions with the same name but with f and l suffixes, which are corresponding @@ -11448,10 +11560,10 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 math_errhandling, the behavior is undefined. If the expression math_errhandling & MATH_ERREXCEPT can be nonzero, the implementation shall define the macros FE_DIVBYZERO, FE_INVALID, and FE_OVERFLOW in - <fenv.h>. + <fenv.h>.

      footnotes
      -

      223) Particularly on systems with wide expression evaluation, a <math.h> function might pass arguments +

      223) Particularly on systems with wide expression evaluation, a <math.h> function might pass arguments and return values in wider format than the synopsis prototype indicates.

      224) The types float_t and double_t are intended to be the implementation's most efficient types at @@ -11470,7 +11582,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.12.1 Treatment of error conditions

      - The behavior of each of the functions in <math.h> is specified for all representable + The behavior of each of the functions in <math.h> is specified for all representable values of its input arguments, except where stated otherwise. Each function shall execute as if it were a single operation without raising SIGFPE and without generating any of the floating-point exceptions ''invalid'', ''divide-by-zero'', or ''overflow'' except to reflect @@ -11545,7 +11657,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -          #include <math.h>
      +          #include <math.h>
                 #pragma STDC FP_CONTRACT on-off-switch
      Description

      @@ -11571,7 +11683,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -          #include <math.h>
      +          #include <math.h>
                 int fpclassify(real-floating x);
      Description

      @@ -11597,7 +11709,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                int isfinite(real-floating x);
      Description

      @@ -11614,7 +11726,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                int isinf(real-floating x);
      Description

      @@ -11630,7 +11742,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                int isnan(real-floating x);
      Description

      @@ -11653,7 +11765,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                int isnormal(real-floating x);
      Description

      @@ -11670,7 +11782,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                int signbit(real-floating x);
      Description

      @@ -11696,7 +11808,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double acos(double x);
                float acosf(float x);
                long double acosl(long double x);
      @@ -11712,7 +11824,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double asin(double x);
                float asinf(float x);
                long double asinl(long double x);
      @@ -11728,7 +11840,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double atan(double x);
                float atanf(float x);
                long double atanl(long double x);
      @@ -11744,7 +11856,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double atan2(double y, double x);
               float atan2f(float y, float x);
               long double atan2l(long double y, long double x);
      @@ -11761,7 +11873,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double cos(double x);
               float cosf(float x);
               long double cosl(long double x);
      @@ -11776,7 +11888,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double sin(double x);
               float sinf(float x);
               long double sinl(long double x);
      @@ -11792,7 +11904,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double tan(double x);
                float tanf(float x);
                long double tanl(long double x);
      @@ -11809,7 +11921,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double acosh(double x);
                float acoshf(float x);
                long double acoshl(long double x);
      @@ -11825,7 +11937,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double asinh(double x);
                float asinhf(float x);
                long double asinhl(long double x);
      @@ -11841,7 +11953,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double atanh(double x);
               float atanhf(float x);
               long double atanhl(long double x);
      @@ -11858,7 +11970,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double cosh(double x);
               float coshf(float x);
               long double coshl(long double x);
      @@ -11874,7 +11986,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double sinh(double x);
               float sinhf(float x);
               long double sinhl(long double x);
      @@ -11891,7 +12003,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double tanh(double x);
                float tanhf(float x);
                long double tanhl(long double x);
      @@ -11908,7 +12020,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double exp(double x);
                float expf(float x);
                long double expl(long double x);
      @@ -11924,7 +12036,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double exp2(double x);
                float exp2f(float x);
                long double exp2l(long double x);
      @@ -11941,7 +12053,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double expm1(double x);
                float expm1f(float x);
                long double expm1l(long double x);
      @@ -11961,7 +12073,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double frexp(double value, int *exp);
                float frexpf(float value, int *exp);
                long double frexpl(long double value, int *exp);
      @@ -11985,7 +12097,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                int ilogb(double x);
                int ilogbf(float x);
                int ilogbl(long double x);
      @@ -12000,13 +12112,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Returns

      The ilogb functions return the exponent of x as a signed int value. - Forward references: the logb functions (7.12.6.11). +

      Forward references: the logb functions (7.12.6.11).

      7.12.6.6 The ldexp functions
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double ldexp(double x, int exp);
                float ldexpf(float x, int exp);
                long double ldexpl(long double x, int exp);
      @@ -12023,7 +12135,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      -         #include <math.h>
      +         #include <math.h>
                double log(double x);
                float logf(float x);
                long double logl(long double x);
      @@ -12039,7 +12151,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double log10(double x);
                float log10f(float x);
                long double log10l(long double x);
      @@ -12055,7 +12167,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double log1p(double x);
                float log1pf(float x);
                long double log1pl(long double x);
      @@ -12081,7 +12193,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double log2(double x);
                float log2f(float x);
                long double log2l(long double x);
      @@ -12097,7 +12209,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double logb(double x);
                float logbf(float x);
                long double logbl(long double x);
      @@ -12117,7 +12229,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double modf(double value, double *iptr);
                float modff(float value, float *iptr);
                long double modfl(long double value, long double *iptr);
      @@ -12135,7 +12247,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double scalbn(double x, int n);
               float scalbnf(float x, int n);
               long double scalbnl(long double x, int n);
      @@ -12156,7 +12268,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double cbrt(double x);
               float cbrtf(float x);
               long double cbrtl(long double x);
      @@ -12172,7 +12284,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double fabs(double x);
                float fabsf(float x);
                long double fabsl(long double x);
      @@ -12187,7 +12299,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double hypot(double x, double y);
                float hypotf(float x, float y);
                long double hypotl(long double x, long double y);
      @@ -12207,7 +12319,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double pow(double x, double y);
                float powf(float x, float y);
                long double powl(long double x, long double y);
      @@ -12226,7 +12338,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double sqrt(double x);
               float sqrtf(float x);
               long double sqrtl(long double x);
      @@ -12247,7 +12359,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double erf(double x);
               float erff(float x);
               long double erfl(long double x);
      @@ -12271,7 +12383,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double erfc(double x);
               float erfcf(float x);
               long double erfcl(long double x);
      @@ -12297,7 +12409,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double lgamma(double x);
                float lgammaf(float x);
                long double lgammal(long double x);
      @@ -12314,7 +12426,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double tgamma(double x);
                float tgammaf(float x);
                long double tgammal(long double x);
      @@ -12334,7 +12446,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double ceil(double x);
               float ceilf(float x);
               long double ceill(long double x);
      @@ -12349,7 +12461,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double floor(double x);
               float floorf(float x);
               long double floorl(long double x);
      @@ -12364,7 +12476,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double nearbyint(double x);
               float nearbyintf(float x);
               long double nearbyintl(long double x);
      @@ -12382,7 +12494,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double rint(double x);
                float rintf(float x);
                long double rintl(long double x);
      @@ -12399,7 +12511,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                long int lrint(double x);
                long int lrintf(float x);
                long int lrintl(long double x);
      @@ -12421,7 +12533,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double round(double x);
               float roundf(float x);
               long double roundl(long double x);
      @@ -12438,7 +12550,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               long int lround(double x);
               long int lroundf(float x);
               long int lroundl(long double x);
      @@ -12460,7 +12572,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       

      -        #include <math.h>
      +        #include <math.h>
               double trunc(double x);
               float truncf(float x);
               long double truncl(long double x);
      @@ -12478,7 +12590,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -          #include <math.h>
      +          #include <math.h>
                 double fmod(double x, double y);
                 float fmodf(float x, float y);
                 long double fmodl(long double x, long double y);
      @@ -12496,7 +12608,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -          #include <math.h>
      +          #include <math.h>
                 double remainder(double x, double y);
                 float remainderf(float x, float y);
                 long double remainderl(long double x, long double y);
      @@ -12524,7 +12636,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double remquo(double x, double y, int *quo);
               float remquof(float x, float y, int *quo);
               long double remquol(long double x, long double y,
      @@ -12547,7 +12659,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               double copysign(double x, double y);
               float copysignf(float x, float y);
               long double copysignl(long double x, long double y);
      @@ -12566,7 +12678,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double nan(const char *tagp);
                float nanf(const char *tagp);
                long double nanl(const char *tagp);
      @@ -12582,13 +12694,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      The nan functions return a quiet NaN, if available, with content indicated through tagp. If the implementation does not support quiet NaNs, the functions return zero. - Forward references: the strtod, strtof, and strtold functions (7.22.1.3). +

      Forward references: the strtod, strtof, and strtold functions (7.22.1.3).

      7.12.11.3 The nextafter functions
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double nextafter(double x, double y);
                float nextafterf(float x, float y);
                long double nextafterl(long double x, long double y);
      @@ -12616,7 +12728,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double nexttoward(double x, long double y);
                float nexttowardf(float x, long double y);
                long double nexttowardl(long double x, long double y);
      @@ -12637,7 +12749,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double fdim(double x, double y);
                float fdimf(float x, float y);
                long double fdiml(long double x, long double y);
      @@ -12657,7 +12769,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double fmax(double x, double y);
                float fmaxf(float x, float y);
                long double fmaxl(long double x, long double y);
      @@ -12681,7 +12793,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double fmin(double x, double y);
                float fminf(float x, float y);
                long double fminl(long double x, long double y);
      @@ -12702,7 +12814,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                double fma(double x, double y, double z);
                float fmaf(float x, float y, float z);
                long double fmal(long double x, long double y,
      @@ -12750,7 +12862,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
      Synopsis

      -          #include <math.h>
      +          #include <math.h>
                 int isgreater(real-floating x, real-floating y);
      Description

      @@ -12766,7 +12878,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -          #include <math.h>
      +          #include <math.h>
                 int isgreaterequal(real-floating x, real-floating y);
      @@ -12787,7 +12899,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                int isless(real-floating x, real-floating y);
      Description

      @@ -12803,7 +12915,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <math.h>
      +         #include <math.h>
                int islessequal(real-floating x, real-floating y);
      Description

      @@ -12820,7 +12932,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               int islessgreater(real-floating x, real-floating y);
      Description

      @@ -12837,7 +12949,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -        #include <math.h>
      +        #include <math.h>
               int isunordered(real-floating x, real-floating y);
      Description

      @@ -12849,7 +12961,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.13 Nonlocal jumps

      - The header <setjmp.h> defines the macro setjmp, and declares one function and + The header <setjmp.h> defines the macro setjmp, and declares one function and one type, for bypassing the normal function call and return discipline.244)

      The type declared is @@ -12877,7 +12989,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <setjmp.h>
      +         #include <setjmp.h>
                int setjmp(jmp_buf env);
      Description

      @@ -12912,7 +13024,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -          #include <setjmp.h>
      +          #include <setjmp.h>
                 _Noreturn void longjmp(jmp_buf env, int val);
      Description

      @@ -12945,7 +13057,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      -         #include <setjmp.h>
      +         #include <setjmp.h>
                jmp_buf buf;
                void g(int n);
                void h(int n);
      @@ -12976,7 +13088,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
       

      7.14 Signal handling

      - The header <signal.h> declares a type and two functions and defines several macros, + The header <signal.h> declares a type and two functions and defines several macros, for handling various signals (conditions that may be reported during program execution).

      The type defined is @@ -13028,7 +13140,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <signal.h>
      +         #include <signal.h>
                void (*signal(int sig, void (*func)(int)))(int);
      Description

      @@ -13081,7 +13193,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 If the request can be honored, the signal function returns the value of func for the most recent successful call to signal for the specified signal sig. Otherwise, a value of SIG_ERR is returned and a positive value is stored in errno. - Forward references: the abort function (7.22.4.1), the exit function (7.22.4.4), the +

      Forward references: the abort function (7.22.4.1), the exit function (7.22.4.4), the _Exit function (7.22.4.5), the quick_exit function (7.22.4.7).

      footnotes
      @@ -13097,7 +13209,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -        #include <signal.h>
      +        #include <signal.h>
               int raise(int sig);
      Description

      @@ -13111,7 +13223,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.15 Alignment

      - The header <stdalign.h> defines two macros. + The header <stdalign.h> defines two macros.

      The macro

      @@ -13126,7 +13238,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
       

      7.16 Variable arguments

      - The header <stdarg.h> declares a type and defines four macros, for advancing + The header <stdarg.h> declares a type and defines four macros, for advancing through a list of arguments whose number and types are not known to the called function when it is translated.

      @@ -13165,7 +13277,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <stdarg.h>
      +         #include <stdarg.h>
                type va_arg(va_list ap, type);
      Description

      @@ -13196,7 +13308,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <stdarg.h>
      +         #include <stdarg.h>
                void va_copy(va_list dest, va_list src);
      Description

      @@ -13213,7 +13325,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <stdarg.h>
      +         #include <stdarg.h>
                void va_end(va_list ap);
      Description

      @@ -13233,7 +13345,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <stdarg.h>
      +         #include <stdarg.h>
                void va_start(va_list ap, parmN);
      Description

      @@ -13257,7 +13369,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 pointers is specified by the first argument to f1.

      -         #include <stdarg.h>
      +         #include <stdarg.h>
                #define MAXARGS   31
                void f1(int n_ptrs, ...)
                {
      @@ -13282,7 +13394,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
        is gathered again and passed to function f4.
       
       
      -          #include <stdarg.h>
      +          #include <stdarg.h>
                 #define MAXARGS 31
                 void f3(int n_ptrs, int f4_after, ...)
                 {
      @@ -13312,7 +13424,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
       

      7.17.1 Introduction

      - The header <stdatomic.h> defines several macros and declares several types and + The header <stdatomic.h> defines several macros and declares several types and functions for performing atomic operations on data shared between threads.

      Implementations that define the macro __STDC_NO_THREADS__ need not provide @@ -13374,7 +13486,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <stdatomic.h>
      +         #include <stdatomic.h>
                #define ATOMIC_VAR_INIT(C value)
      Description

      @@ -13397,7 +13509,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <stdatomic.h>
      +         #include <stdatomic.h>
                void atomic_init(volatile A *obj, C value);
      Description

      @@ -13556,7 +13668,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <stdatomic.h>
      +         #include <stdatomic.h>
                type kill_dependency(type y);
      Description

      @@ -13594,7 +13706,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <stdatomic.h>
      +         #include <stdatomic.h>
                void atomic_thread_fence(memory_order order);
      Description

      @@ -13618,7 +13730,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <stdatomic.h>
      +         #include <stdatomic.h>
                void atomic_signal_fence(memory_order order);
      Description

      @@ -13654,7 +13766,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <stdatomic.h>
      +         #include <stdatomic.h>
                _Bool atomic_is_lock_free(atomic_type const volatile *obj);
      Description

      @@ -13733,7 +13845,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      Synopsis

      -         #include <stdatomic.h>
      +         #include <stdatomic.h>
                void atomic_store(volatile A *object, C desired);
                void atomic_store_explicit(volatile A *object,
                     C desired, memory_order order);
      @@ -13751,7 +13863,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <stdatomic.h>
      +         #include <stdatomic.h>
                C atomic_load(volatile A *object);
                C atomic_load_explicit(volatile A *object,
                     memory_order order);
      @@ -13767,7 +13879,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -          #include <stdatomic.h>
      +          #include <stdatomic.h>
                 C atomic_exchange(volatile A *object, C desired);
                 C atomic_exchange_explicit(volatile A *object,
                      C desired, memory_order order);
      @@ -13784,7 +13896,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -          #include <stdatomic.h>
      +          #include <stdatomic.h>
                 _Bool atomic_compare_exchange_strong(volatile A *object,
                      C *expected, C desired);
                 _Bool atomic_compare_exchange_strong_explicit(
      @@ -13852,7 +13964,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
      Synopsis

      -          #include <stdatomic.h>
      +          #include <stdatomic.h>
                 C atomic_fetch_key(volatile A *object, M operand);
                 C atomic_fetch_key_explicit(volatile A *object,
                      M operand, memory_order order);
      @@ -13903,7 +14015,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      Synopsis

      -         #include <stdatomic.h>
      +         #include <stdatomic.h>
                bool atomic_flag_test_and_set(
                     volatile atomic_flag *object);
                bool atomic_flag_test_and_set_explicit(
      @@ -13922,7 +14034,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
      Synopsis

      -         #include <stdatomic.h>
      +         #include <stdatomic.h>
                void atomic_flag_clear(volatile atomic_flag *object);
                void atomic_flag_clear_explicit(
                     volatile atomic_flag *object, memory_order order);
      @@ -13938,7 +14050,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.18 Boolean type and values

      - The header <stdbool.h> defines four macros. + The header <stdbool.h> defines four macros.

      The macro

      @@ -13971,7 +14083,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
       

      7.19 Common definitions

      - The header <stddef.h> defines the following macros and declares the following types. + The header <stddef.h> defines the following macros and declares the following types. Some are also defined in other headers, as noted in their respective subclauses.

      The types are @@ -14014,12 +14126,12 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 greater than that of signed long int unless the implementation supports objects large enough to make this necessary. - Forward references: localization (7.11). +

      Forward references: localization (7.11).

      7.20 Integer types

      - The header <stdint.h> declares sets of integer types having specified widths, and + The header <stdint.h> declares sets of integer types having specified widths, and defines corresponding sets of macros.253) It also defines macros that specify limits of integer types corresponding to types defined in other standard headers.

      @@ -14036,9 +14148,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Corresponding macros specify limits of the declared types and construct suitable constants.

      - For each type described herein that the implementation provides,254) <stdint.h> shall + For each type described herein that the implementation provides,254) <stdint.h> shall declare that typedef name and define the associated macros. Conversely, for each type - described herein that the implementation does not provide, <stdint.h> shall not + described herein that the implementation does not provide, <stdint.h> shall not declare that typedef name nor shall it define the associated macros. An implementation shall provide those types described as ''required'', but need not provide any of the others (described as ''optional''). @@ -14153,7 +14265,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.20.2 Limits of specified-width integer types

      The following object-like macros specify the minimum and maximum limits of the types * - declared in <stdint.h>. Each macro name corresponds to a similar type name in + declared in <stdint.h>. Each macro name corresponds to a similar type name in 7.20.1.

      Each instance of any defined macro shall be replaced by a constant expression suitable @@ -14286,7 +14398,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.20.4 Macros for integer constants

      The following function-like macros expand to integer constants suitable for initializing * - objects that have integer types corresponding to types defined in <stdint.h>. Each + objects that have integer types corresponding to types defined in <stdint.h>. Each macro name corresponds to a similar type name in 7.20.1.2 or 7.20.1.5.

      The argument in any instance of these macros shall be an unsuffixed integer constant (as @@ -14326,7 +14438,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      7.21.1 Introduction

      - The header <stdio.h> defines several macros, and declares three types and many + The header <stdio.h> defines several macros, and declares three types and many functions for performing input and output.

      The types declared are size_t (described in 7.19); @@ -14389,7 +14501,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 which are expressions of type ''pointer to FILE'' that point to the FILE objects associated, respectively, with the standard error, input, and output streams.

      - The header <wchar.h> declares a number of functions useful for wide character input + The header <wchar.h> declares a number of functions useful for wide character input and output. The wide character input/output functions described in that subclause provide operations analogous to most of those described here, except that the fundamental units internal to the program are wide characters. The external @@ -14414,8 +14526,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 fscanf, fwrite, getc, getchar, printf, putc, putchar, puts, scanf, * ungetc, vfprintf, vfscanf, vprintf, and vscanf.

    - Forward references: files (7.21.3), the fseek function (7.21.9.2), streams (7.21.2), the - tmpnam function (7.21.4.4), <wchar.h> (7.28). +

    Forward references: files (7.21.3), the fseek function (7.21.9.2), streams (7.21.2), the + tmpnam function (7.21.4.4), <wchar.h> (7.28).

    footnotes

    258) If the implementation imposes no practical limit on the length of file name strings, the value of @@ -14485,7 +14597,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 An implementation shall support text files with lines containing at least 254 characters, including the terminating new-line character. The value of the macro BUFSIZ shall be at least 256. - Forward references: the freopen function (7.21.5.4), the fwide function (7.28.3.5), +

    Forward references: the freopen function (7.21.5.4), the fwide function (7.28.3.5), mbstate_t (7.29.1), the fgetpos function (7.21.9.1), the fsetpos function (7.21.9.3). @@ -14602,7 +14714,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    The value of FOPEN_MAX shall be at least eight, including the three standard text streams. - Forward references: the exit function (7.22.4.4), the fgetc function (7.21.7.1), the +

    Forward references: the exit function (7.22.4.4), the fgetc function (7.21.7.1), the fopen function (7.21.5.3), the fputc function (7.21.7.3), the setbuf function (7.21.5.5), the setvbuf function (7.21.5.6), the fgetwc function (7.28.3.1), the fputwc function (7.28.3.3), conversion state (7.28.6), the mbrtowc function @@ -14620,7 +14732,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int remove(const char *filename);
    Description

    @@ -14636,7 +14748,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int rename(const char *old, const char *new);
    Description

    @@ -14659,7 +14771,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              FILE *tmpfile(void);
    Description

    @@ -14677,13 +14789,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    The tmpfile function returns a pointer to the stream of the file that it created. If the file cannot be created, the tmpfile function returns a null pointer. - Forward references: the fopen function (7.21.5.3). +

    Forward references: the fopen function (7.21.5.3).

    7.21.4.4 The tmpnam function
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              char *tmpnam(char *s);
    Description

    @@ -14725,7 +14837,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int fclose(FILE *stream);
    Description

    @@ -14745,7 +14857,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int fflush(FILE *stream);
    Description

    @@ -14760,13 +14872,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    The fflush function sets the error indicator for the stream and returns EOF if a write error occurs, otherwise it returns zero. - Forward references: the fopen function (7.21.5.3). +

    Forward references: the fopen function (7.21.5.3).

    7.21.5.3 The fopen function
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              FILE *fopen(const char * restrict filename,
                   const char * restrict mode);
    Description
    @@ -14826,7 +14938,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    The fopen function returns a pointer to the object controlling the stream. If the open operation fails, fopen returns a null pointer. - Forward references: file positioning functions (7.21.9). +

    Forward references: file positioning functions (7.21.9).

    footnotes
    @@ -14839,7 +14951,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              FILE *freopen(const char * restrict filename,
                   const char * restrict mode,
                   FILE * restrict stream);
    @@ -14872,7 +14984,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              void setbuf(FILE * restrict stream,
                   char * restrict buf);
    Description
    @@ -14888,13 +15000,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Returns

    The setbuf function returns no value. - Forward references: the setvbuf function (7.21.5.6). +

    Forward references: the setvbuf function (7.21.5.6).

    7.21.5.6 The setvbuf function
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int setvbuf(FILE * restrict stream,
                   char * restrict buf,
                   int mode, size_t size);
    @@ -14938,7 +15050,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -          #include <stdio.h>
    +          #include <stdio.h>
               int fprintf(FILE * restrict stream,
                    const char * restrict format, ...);
    Description
    @@ -15241,8 +15353,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 EXAMPLE 1 To print a date and time in the form ''Sunday, July 3, 10:02'' followed by pi to five decimal places:
    -          #include <math.h>
    -          #include <stdio.h>
    +          #include <math.h>
    +          #include <stdio.h>
               /* ... */
               char *weekday, *month;      // pointers to strings
               int day, hour, min;
    @@ -15277,7 +15389,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
               |      abc Z W|
               |            Z|
    - Forward references: conversion state (7.28.6), the wcrtomb function (7.28.6.3.3). +

    Forward references: conversion state (7.28.6), the wcrtomb function (7.28.6.3.3).

    footnotes
    @@ -15312,7 +15424,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int fscanf(FILE * restrict stream,
                   const char * restrict format, ...);
    Description
    @@ -15544,7 +15656,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    EXAMPLE 1 The call:

    -          #include <stdio.h>
    +          #include <stdio.h>
               /* ... */
               int n, i; float x; char name[50];
               n = fscanf(stdin, "%d%f%s", &i, &x, name);
    @@ -15557,7 +15669,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    EXAMPLE 2 The call:

    -          #include <stdio.h>
    +          #include <stdio.h>
               /* ... */
               int i; float x; char name[50];
               fscanf(stdin, "%2d%f%*d %[0123456789]", &i, &x, name);
    @@ -15571,7 +15683,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 EXAMPLE 3 To accept repeatedly from stdin a quantity, a unit of measure, and an item name:

    -          #include <stdio.h>
    +          #include <stdio.h>
               /* ... */
               int count; float quant; char units[21], item[21];
               do {
    @@ -15602,7 +15714,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     

    EXAMPLE 4 In:

    -           #include <stdio.h>
    +           #include <stdio.h>
                /* ... */
                int d1, d2, n1, n2, i;
                i = sscanf("123", "%d%n%n%d", &d1, &n1, &n2, &d2);
    @@ -15618,7 +15730,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    After the call:

    -           #include <stdio.h>
    +           #include <stdio.h>
                /* ... */
                char str[50];
                fscanf(stdin, "a%s", str);
    @@ -15630,8 +15742,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    In contrast, after the call:

    -           #include <stdio.h>
    -           #include <stddef.h>
    +           #include <stdio.h>
    +           #include <stddef.h>
                /* ... */
                wchar_t wstr[50];
                fscanf(stdin, "a%ls", wstr);
    @@ -15641,8 +15753,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 However, the call:
    -         #include <stdio.h>
    -         #include <stddef.h>
    +         #include <stdio.h>
    +         #include <stddef.h>
              /* ... */
              wchar_t wstr[50];
              fscanf(stdin, "a(uparrow) X(downarrow)%ls", wstr);
    @@ -15652,15 +15764,15 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Assuming that the first byte of the multibyte character X is the same as the first byte of the multibyte character Y, after the call:
    -         #include <stdio.h>
    -         #include <stddef.h>
    +         #include <stdio.h>
    +         #include <stddef.h>
              /* ... */
              wchar_t wstr[50];
              fscanf(stdin, "a(uparrow) Y(downarrow)%ls", wstr);
    with the same input line, zero will again be returned, but stdin will be left with a partially consumed multibyte character. - Forward references: the strtod, strtof, and strtold functions (7.22.1.3), the +

    Forward references: the strtod, strtof, and strtold functions (7.22.1.3), the strtol, strtoll, strtoul, and strtoull functions (7.22.1.4), conversion state (7.28.6), the wcrtomb function (7.28.6.3.3). @@ -15681,7 +15793,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int printf(const char * restrict format, ...);
    Description

    @@ -15696,7 +15808,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int scanf(const char * restrict format, ...);
    Description

    @@ -15714,7 +15826,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int snprintf(char * restrict s, size_t n,
                   const char * restrict format, ...);
    Description
    @@ -15736,7 +15848,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int sprintf(char * restrict s,
                   const char * restrict format, ...);
    Description
    @@ -15755,7 +15867,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int sscanf(const char * restrict s,
                  const char * restrict format, ...);
    Description
    @@ -15775,8 +15887,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -        #include <stdarg.h>
    -        #include <stdio.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
             int vfprintf(FILE * restrict stream,
                  const char * restrict format,
                  va_list arg);
    @@ -15798,8 +15910,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    -         #include <stdarg.h>
    -         #include <stdio.h>
    +         #include <stdarg.h>
    +         #include <stdio.h>
              void error(char *function_name, char *format, ...)
              {
                    va_list args;
    @@ -15821,8 +15933,8 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
    Synopsis

    -         #include <stdarg.h>
    -         #include <stdio.h>
    +         #include <stdarg.h>
    +         #include <stdio.h>
              int vfscanf(FILE * restrict stream,
                   const char * restrict format,
                   va_list arg);
    @@ -15843,8 +15955,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdarg.h>
    -         #include <stdio.h>
    +         #include <stdarg.h>
    +         #include <stdio.h>
              int vprintf(const char * restrict format,
                   va_list arg);
    Description
    @@ -15863,8 +15975,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -        #include <stdarg.h>
    -        #include <stdio.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
             int vscanf(const char * restrict format,
                  va_list arg);
    Description
    @@ -15884,8 +15996,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -        #include <stdarg.h>
    -        #include <stdio.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
             int vsnprintf(char * restrict s, size_t n,
                  const char * restrict format,
                  va_list arg);
    @@ -15908,8 +16020,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdarg.h>
    -         #include <stdio.h>
    +         #include <stdarg.h>
    +         #include <stdio.h>
              int vsprintf(char * restrict s,
                   const char * restrict format,
                   va_list arg);
    @@ -15929,8 +16041,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdarg.h>
    -         #include <stdio.h>
    +         #include <stdarg.h>
    +         #include <stdio.h>
              int vsscanf(const char * restrict s,
                   const char * restrict format,
                   va_list arg);
    @@ -15954,7 +16066,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int fgetc(FILE *stream);
    Description

    @@ -15978,7 +16090,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              char *fgets(char * restrict s, int n,
                   FILE * restrict stream);
    Description
    @@ -16000,7 +16112,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int fputc(int c, FILE *stream);
    Description

    @@ -16018,7 +16130,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int fputs(const char * restrict s,
                   FILE * restrict stream);
    Description
    @@ -16034,7 +16146,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int getc(FILE *stream);
    Description

    @@ -16053,7 +16165,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int getchar(void);
    Description

    @@ -16069,7 +16181,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int putc(int c, FILE *stream);
    Description

    @@ -16085,7 +16197,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int putchar(int c);
    Description

    @@ -16100,7 +16212,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int puts(const char *s);
    Description

    @@ -16116,7 +16228,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int ungetc(int c, FILE *stream);
    Description

    @@ -16147,7 +16259,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    The ungetc function returns the character pushed back after conversion, or EOF if the operation fails. - Forward references: file positioning functions (7.21.9). +

    Forward references: file positioning functions (7.21.9).

    footnotes

    283) See ''future library directions'' (7.30.9). @@ -16159,7 +16271,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -          #include <stdio.h>
    +          #include <stdio.h>
               size_t fread(void * restrict ptr,
                    size_t size, size_t nmemb,
                    FILE * restrict stream);
    @@ -16188,7 +16300,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              size_t fwrite(const void * restrict ptr,
                   size_t size, size_t nmemb,
                   FILE * restrict stream);
    @@ -16213,7 +16325,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              int fgetpos(FILE * restrict stream,
                   fpos_t * restrict pos);
    Description
    @@ -16226,14 +16338,14 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    If successful, the fgetpos function returns zero; on failure, the fgetpos function returns nonzero and stores an implementation-defined positive value in errno. - Forward references: the fsetpos function (7.21.9.3). +

    Forward references: the fsetpos function (7.21.9.3).

    7.21.9.2 The fseek function
    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int fseek(FILE *stream, long int offset, int whence);
    Description

    @@ -16257,13 +16369,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Returns

    The fseek function returns nonzero only for a request that cannot be satisfied. - Forward references: the ftell function (7.21.9.4). +

    Forward references: the ftell function (7.21.9.4).

    7.21.9.3 The fsetpos function
    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int fsetpos(FILE *stream, const fpos_t *pos);
    Description

    @@ -16287,7 +16399,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              long int ftell(FILE *stream);
    Description

    @@ -16308,7 +16420,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              void rewind(FILE *stream);
    Description

    @@ -16328,7 +16440,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             void clearerr(FILE *stream);
    Description

    @@ -16342,7 +16454,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int feof(FILE *stream);
    Description

    @@ -16356,7 +16468,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <stdio.h>
    +        #include <stdio.h>
             int ferror(FILE *stream);
    Description

    @@ -16371,7 +16483,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    +         #include <stdio.h>
              void perror(const char *s);
    Description

    @@ -16384,12 +16496,12 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Returns

    The perror function returns no value. - Forward references: the strerror function (7.23.6.2). +

    Forward references: the strerror function (7.23.6.2).

    7.22 General utilities

    - The header <stdlib.h> declares five types and several functions of general utility, and + The header <stdlib.h> declares five types and several functions of general utility, and defines several macros.284)

    The types declared are size_t and wchar_t (both described in 7.19), @@ -16441,7 +16553,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              double atof(const char *nptr);
    Description

    @@ -16452,13 +16564,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Returns

    The atof function returns the converted value. - Forward references: the strtod, strtof, and strtold functions (7.22.1.3). +

    Forward references: the strtod, strtof, and strtold functions (7.22.1.3).

    7.22.1.2 The atoi, atol, and atoll functions
    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              int atoi(const char *nptr);
              long int atol(const char *nptr);
              long long int atoll(const char *nptr);
    @@ -16474,7 +16586,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Returns

    The atoi, atol, and atoll functions return the converted value. - Forward references: the strtol, strtoll, strtoul, and strtoull functions +

    Forward references: the strtol, strtoll, strtoul, and strtoull functions (7.22.1.4). @@ -16482,7 +16594,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             double strtod(const char * restrict nptr,
                  char ** restrict endptr);
             float strtof(const char * restrict nptr,
    @@ -16555,7 +16667,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      direction.
     

    If the subject sequence has the decimal form and at most DECIMAL_DIG (defined in - <float.h>) significant digits, the result should be correctly rounded. If the subject + <float.h>) significant digits, the result should be correctly rounded. If the subject sequence D has the decimal form and more than DECIMAL_DIG significant digits, consider the two bounding, adjacent decimal strings L and U, both having DECIMAL_DIG significant digits, such that the values of L, D, and U satisfy L <= D <= U. @@ -16584,7 +16696,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    286) An implementation may use the n-char sequence to determine extra information to be represented in the NaN's significand. -

    287) DECIMAL_DIG, defined in <float.h>, should be sufficiently large that L and U will usually round +

    287) DECIMAL_DIG, defined in <float.h>, should be sufficiently large that L and U will usually round to the same internal floating value, but if not will round to adjacent values. @@ -16592,7 +16704,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              long int strtol(
                   const char * restrict nptr,
                   char ** restrict endptr,
    @@ -16669,7 +16781,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              int rand(void);
    Description

    @@ -16695,7 +16807,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              void srand(unsigned int seed);
    Description

    @@ -16748,7 +16860,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              void *aligned_alloc(size_t alignment, size_t size);
    Description

    @@ -16766,7 +16878,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              void *calloc(size_t nmemb, size_t size);
    Description

    @@ -16785,7 +16897,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              void free(void *ptr);
    Description

    @@ -16802,7 +16914,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              void *malloc(size_t size);
    Description

    @@ -16821,7 +16933,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              void *realloc(void *ptr, size_t size);
    Description

    @@ -16848,7 +16960,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              _Noreturn void abort(void);
    Description

    @@ -16867,7 +16979,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             int atexit(void (*func)(void));
    Description

    @@ -16879,7 +16991,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Returns

    The atexit function returns zero if the registration succeeds, nonzero if it fails. - Forward references: the at_quick_exit function (7.22.4.3), the exit function +

    Forward references: the at_quick_exit function (7.22.4.3), the exit function (7.22.4.4).

    footnotes
    @@ -16891,7 +17003,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             int at_quick_exit(void (*func)(void));
    Description

    @@ -16904,7 +17016,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    The at_quick_exit function returns zero if the registration succeeds, nonzero if it fails. - Forward references: the quick_exit function (7.22.4.7). +

    Forward references: the quick_exit function (7.22.4.7). @@ -16918,7 +17030,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              _Noreturn void exit(int status);
    Description

    @@ -16954,7 +17066,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              _Noreturn void _Exit(int status);
    Description

    @@ -16976,7 +17088,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              char *getenv(const char *name);
    Description

    @@ -17002,7 +17114,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              _Noreturn void quick_exit(int status);
    Description

    @@ -17035,7 +17147,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              int system(const char *string);
    Description

    @@ -17096,7 +17208,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -          #include <stdlib.h>
    +          #include <stdlib.h>
               void *bsearch(const void *key, const void *base,
                    size_t nmemb, size_t size,
                    int (*compar)(const void *, const void *));
    @@ -17129,7 +17241,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              void qsort(void *base, size_t nmemb, size_t size,
                   int (*compar)(const void *, const void *));
    Description
    @@ -17154,7 +17266,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              int abs(int j);
              long int labs(long int j);
              long long int llabs(long long int j);
    @@ -17179,7 +17291,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -          #include <stdlib.h>
    +          #include <stdlib.h>
               div_t div(int numer, int denom);
               ldiv_t ldiv(long int numer, long int denom);
               lldiv_t lldiv(long long int numer, long long int denom);
    @@ -17215,7 +17327,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -          #include <stdlib.h>
    +          #include <stdlib.h>
               int mblen(const char *s, size_t n);
    Description

    @@ -17239,13 +17351,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 or returns the number of bytes that are contained in the multibyte character (if the next n or fewer bytes form a valid multibyte character), or returns -1 (if they do not form a valid multibyte character). - Forward references: the mbtowc function (7.22.7.2). +

    Forward references: the mbtowc function (7.22.7.2).

    7.22.7.2 The mbtowc function
    Synopsis

    -         #include <stdlib.h>
    +         #include <stdlib.h>
              int mbtowc(wchar_t * restrict pwc,
                   const char * restrict s,
                   size_t n);
    @@ -17277,7 +17389,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             int wctomb(char *s, wchar_t wc);
    Description

    @@ -17309,7 +17421,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <stdlib.h>
    +        #include <stdlib.h>
             size_t mbstowcs(wchar_t * restrict pwcs,
                  const char * restrict s,
                  size_t n);
    @@ -17340,7 +17452,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -          #include <stdlib.h>
    +          #include <stdlib.h>
               size_t wcstombs(char * restrict s,
                    const wchar_t * restrict pwcs,
                    size_t n);
    @@ -17371,7 +17483,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    7.23.1 String function conventions

    - The header <string.h> declares one type and several functions, and defines one + The header <string.h> declares one type and several functions, and defines one macro useful for manipulating arrays of character type and other objects treated as arrays of character type.300) The type is size_t and the macro is NULL (both described in 7.19). Various methods are used for determining the lengths of the arrays, but in all cases @@ -17400,7 +17512,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -          #include <string.h>
    +          #include <string.h>
               void *memcpy(void * restrict s1,
                    const void * restrict s2,
                    size_t n);
    @@ -17422,7 +17534,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              void *memmove(void *s1, const void *s2, size_t n);
    Description

    @@ -17439,7 +17551,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              char *strcpy(char * restrict s1,
                   const char * restrict s2);
    Description
    @@ -17455,7 +17567,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              char *strncpy(char * restrict s1,
                   const char * restrict s2,
                   size_t n);
    @@ -17484,7 +17596,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -          #include <string.h>
    +          #include <string.h>
               char *strcat(char * restrict s1,
                    const char * restrict s2);
    Description
    @@ -17501,7 +17613,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -          #include <string.h>
    +          #include <string.h>
               char *strncat(char * restrict s1,
                    const char * restrict s2,
                    size_t n);
    @@ -17517,7 +17629,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Returns

    The strncat function returns the value of s1. - Forward references: the strlen function (7.23.6.3). +

    Forward references: the strlen function (7.23.6.3).

    footnotes

    302) Thus, the maximum number of characters that can end up in the array pointed to by s1 is @@ -17535,7 +17647,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              int memcmp(const void *s1, const void *s2, size_t n);
    Description

    @@ -17557,7 +17669,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              int strcmp(const char *s1, const char *s2);
    Description

    @@ -17575,7 +17687,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             int strcoll(const char *s1, const char *s2);
    Description

    @@ -17591,7 +17703,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             int strncmp(const char *s1, const char *s2, size_t n);
    Description

    @@ -17608,7 +17720,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             size_t strxfrm(char * restrict s1,
                  const char * restrict s2,
                  size_t n);
    @@ -17641,7 +17753,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              void *memchr(const void *s, int c, size_t n);
    Description

    @@ -17658,7 +17770,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              char *strchr(const char *s, int c);
    Description

    @@ -17675,7 +17787,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             size_t strcspn(const char *s1, const char *s2);
    Description

    @@ -17690,7 +17802,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             char *strpbrk(const char *s1, const char *s2);
    Description

    @@ -17705,7 +17817,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             char *strrchr(const char *s, int c);
    Description

    @@ -17722,7 +17834,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              size_t strspn(const char *s1, const char *s2);
    Description

    @@ -17736,7 +17848,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              char *strstr(const char *s1, const char *s2);
    Description

    @@ -17752,7 +17864,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              char *strtok(char * restrict s1,
                   const char * restrict s2);
    Description
    @@ -17788,7 +17900,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    EXAMPLE

    -        #include <string.h>
    +        #include <string.h>
             static char str[] = "?a???b,,,#c";
             char *t;
             t   =   strtok(str, "?");      //   t   points to the token "a"
    @@ -17803,7 +17915,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
    Synopsis

    -        #include <string.h>
    +        #include <string.h>
             void *memset(void *s, int c, size_t n);
    Description

    @@ -17818,7 +17930,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              char *strerror(int errnum);
    Description

    @@ -17838,7 +17950,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <string.h>
    +         #include <string.h>
              size_t strlen(const char *s);
    Description

    @@ -17851,10 +17963,10 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    7.24 Type-generic math

    - The header <tgmath.h> includes the headers <math.h> and <complex.h> and + The header <tgmath.h> includes the headers <math.h> and <complex.h> and defines several type-generic macros.

    - Of the <math.h> and <complex.h> functions without an f (float) or l (long + Of the <math.h> and <complex.h> functions without an f (float) or l (long double) suffix, several have one or more parameters whose corresponding real type is double. For each such function, except modf, there is a corresponding type-generic macro.304) The parameters whose corresponding real type is double in the function @@ -17872,9 +17984,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

  • Otherwise, the type determined is float.

    - For each unsuffixed function in <math.h> for which there is a function in - <complex.h> with the same name except for a c prefix, the corresponding type- - generic macro (for both functions) has the same name as the function in <math.h>. The + For each unsuffixed function in <math.h> for which there is a function in + <complex.h> with the same name except for a c prefix, the corresponding type- + generic macro (for both functions) has the same name as the function in <math.h>. The corresponding type-generic macro for fabs and cabs is fabs. @@ -17882,7 +17994,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    -          <math.h>         <complex.h>              type-generic
    +          <math.h>         <complex.h>              type-generic
                function           function                 macro
                 acos              cacos                   acos
                 asin              casin                   asin
    @@ -17904,8 +18016,8 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      If at least one argument for a generic parameter is complex, then use of the macro invokes
      a complex function; otherwise, use of the macro invokes a real function.
     

    - For each unsuffixed function in <math.h> without a c-prefixed counterpart in - <complex.h> (except modf), the corresponding type-generic macro has the same + For each unsuffixed function in <math.h> without a c-prefixed counterpart in + <complex.h> (except modf), the corresponding type-generic macro has the same name as the function. These type-generic macros are:

              atan2              fma                  llround              remainder
    @@ -17922,8 +18034,8 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      function; otherwise, use of the macro results in undefined behavior.
     
     

    - For each unsuffixed function in <complex.h> that is not a c-prefixed counterpart to a - function in <math.h>, the corresponding type-generic macro has the same name as the + For each unsuffixed function in <complex.h> that is not a c-prefixed counterpart to a + function in <math.h>, the corresponding type-generic macro has the same name as the function. These type-generic macros are:

             carg                     conj                     creal
    @@ -17932,7 +18044,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     

    EXAMPLE With the declarations

    -         #include <tgmath.h>
    +         #include <tgmath.h>
              int n;
              float f;
              double d;
    @@ -17978,7 +18090,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
     

    7.25.1 Introduction

    - The header <threads.h> defines macros, and declares types, enumeration constants, + The header <threads.h> defines macros, and declares types, enumeration constants, and functions that support multiple threads of execution.

    Implementations that define the macro __STDC_NO_THREADS__ need not provide @@ -18068,7 +18180,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              void call_once(once_flag *flag, void (*func)(void));
    Description

    @@ -18086,7 +18198,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              int cnd_broadcast(cnd_t *cond);
    Description

    @@ -18103,7 +18215,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              void cnd_destroy(cnd_t *cond);
    Description

    @@ -18119,7 +18231,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <threads.h>
    +        #include <threads.h>
             int cnd_init(cnd_t *cond);
    Description

    @@ -18137,7 +18249,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <threads.h>
    +        #include <threads.h>
             int cnd_signal(cnd_t *cond);
    Description

    @@ -18155,7 +18267,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    -        #include <threads.h>
    +        #include <threads.h>
             int cnd_timedwait(cnd_t *cond, mtx_t *mtx,
                  const xtime *xt);
    Description
    @@ -18176,7 +18288,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              int cnd_wait(cnd_t *cond, mtx_t *mtx);
    Description

    @@ -18197,7 +18309,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              void mtx_destroy(mtx_t *mtx);
    Description

    @@ -18212,7 +18324,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <threads.h>
    +        #include <threads.h>
             int mtx_init(mtx_t *mtx, int type);
    Description

    @@ -18236,7 +18348,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <threads.h>
    +        #include <threads.h>
             int mtx_lock(mtx_t *mtx);
    Description

    @@ -18254,7 +18366,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              int mtx_timedlock(mtx_t *mtx, const xtime *xt);
    Description

    @@ -18273,7 +18385,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              int mtx_trylock(mtx_t *mtx);
    Description

    @@ -18291,7 +18403,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              int mtx_unlock(mtx_t *mtx);
    Description

    @@ -18309,7 +18421,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <threads.h>
    +        #include <threads.h>
             int thrd_create(thrd_t *thr, thrd_start_t func,
                  void *arg);
    Description
    @@ -18330,7 +18442,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -        #include <threads.h>
    +        #include <threads.h>
             thrd_t thrd_current(void);
    Description

    @@ -18344,7 +18456,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    -        #include <threads.h>
    +        #include <threads.h>
             int thrd_detach(thrd_t thr);
    Description

    @@ -18360,7 +18472,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              int thrd_equal(thrd_t thr0, thrd_t thr1);
    Description

    @@ -18375,7 +18487,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              void thrd_exit(int res);
    Description

    @@ -18389,7 +18501,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              int thrd_join(thrd_t thr, int *res);
    Description

    @@ -18408,7 +18520,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <threads.h>
    +        #include <threads.h>
             void thrd_sleep(const xtime *xt);
    Description

    @@ -18422,7 +18534,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <threads.h>
    +        #include <threads.h>
             void thrd_yield(void);
    Description

    @@ -18438,7 +18550,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <threads.h>
    +        #include <threads.h>
             int tss_create(tss_t *key, tss_dtor_t dtor);
    Description

    @@ -18456,7 +18568,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              void tss_delete(tss_t key);
    Description

    @@ -18470,7 +18582,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              void *tss_get(tss_t key);
    Description

    @@ -18485,7 +18597,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              int tss_set(tss_t key, void *val);
    Description

    @@ -18503,7 +18615,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <threads.h>
    +         #include <threads.h>
              int xtime_get(xtime *xt, int base);
    Description

    @@ -18528,7 +18640,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    7.26.1 Components of time

    - The header <time.h> defines two macros, and declares several types and functions for + The header <time.h> defines two macros, and declares several types and functions for manipulating time. Many functions deal with a calendar time that represents the current date (according to the Gregorian calendar) and time. Some functions deal with local time, which is the calendar time expressed for some specific time zone, and with Daylight @@ -18583,7 +18695,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <time.h>
    +         #include <time.h>
              clock_t clock(void);
    Description

    @@ -18606,7 +18718,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <time.h>
    +         #include <time.h>
              double difftime(time_t time1, time_t time0);
    Description

    @@ -18625,7 +18737,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <time.h>
    +         #include <time.h>
              time_t mktime(struct tm *timeptr);
    Description

    @@ -18646,8 +18758,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    EXAMPLE What day of the week is July 4, 2001?

    -         #include <stdio.h>
    -         #include <time.h>
    +         #include <stdio.h>
    +         #include <time.h>
              static const char *const wday[] = {
                      "Sunday", "Monday", "Tuesday", "Wednesday",
                      "Thursday", "Friday", "Saturday", "-unknown-"
    @@ -18682,7 +18794,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
    Synopsis

    -        #include <time.h>
    +        #include <time.h>
             time_t time(time_t *timer);
    Description

    @@ -18708,7 +18820,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <time.h>
    +        #include <time.h>
             char *asctime(const struct tm *timeptr);
    Description

    @@ -18754,7 +18866,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <time.h>
    +         #include <time.h>
              char *ctime(const time_t *timer);
    Description

    @@ -18770,13 +18882,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    The ctime function returns the pointer returned by the asctime function with that broken-down time as argument. - Forward references: the localtime function (7.26.3.4). +

    Forward references: the localtime function (7.26.3.4).

    7.26.3.3 The gmtime function
    Synopsis

    -        #include <time.h>
    +        #include <time.h>
             struct tm *gmtime(const time_t *timer);
    Description

    @@ -18791,7 +18903,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <time.h>
    +        #include <time.h>
             struct tm *localtime(const time_t *timer);
    Description

    @@ -18807,7 +18919,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    -        #include <time.h>
    +        #include <time.h>
             size_t strftime(char * restrict s,
                  size_t maxsize,
                  const char * restrict format,
    @@ -18983,7 +19095,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
     

    7.27 Unicode utilities

    - The header <uchar.h> declares types and functions for manipulating Unicode + The header <uchar.h> declares types and functions for manipulating Unicode characters.

    The types declared are mbstate_t (described in 7.29.1) and size_t (described in @@ -19011,7 +19123,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <uchar.h>
    +         #include <uchar.h>
              size_t mbrtoc16(char16_t * restrict pc16,
                   const char * restrict s, size_t n,
                   mbstate_t * restrict ps);
    @@ -19065,7 +19177,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <uchar.h>
    +         #include <uchar.h>
              size_t c16rtomb(char * restrict s, char16_t c16,
                   mbstate_t * restrict ps);
    Description
    @@ -19095,7 +19207,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <uchar.h>
    +         #include <uchar.h>
              size_t mbrtoc32(char32_t * restrict pc32,
                   const char * restrict s, size_t n,
                   mbstate_t * restrict ps);
    @@ -19149,7 +19261,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <uchar.h>
    +         #include <uchar.h>
              size_t c32rtomb(char * restrict s, char32_t c32,
                   mbstate_t * restrict ps);
    Description
    @@ -19181,7 +19293,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    7.28.1 Introduction

    - The header <wchar.h> defines four macros, and declares four data types, one tag, and + The header <wchar.h> defines four macros, and declares four data types, one tag, and many functions.313)

    The types declared are wchar_t and size_t (both described in 7.19); @@ -19249,8 +19361,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              int fwprintf(FILE * restrict stream,
                   const wchar_t * restrict format, ...);
    Description
    @@ -19543,9 +19655,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 EXAMPLE To print a date and time in the form ''Sunday, July 3, 10:02'' followed by pi to five decimal places:
    -         #include <math.h>
    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <math.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              /* ... */
              wchar_t *weekday, *month; // pointers to wide strings
              int day, hour, min;
    @@ -19553,7 +19665,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
                      weekday, month, day, hour, min);
              fwprintf(stdout, L"pi = %.5f\n", 4 * atan(1.0));
    - Forward references: the btowc function (7.28.6.1.1), the mbrtowc function +

    Forward references: the btowc function (7.28.6.1.1), the mbrtowc function (7.28.6.3.2).

    footnotes
    @@ -19584,8 +19696,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              int fwscanf(FILE * restrict stream,
                   const wchar_t * restrict format, ...);
    Description
    @@ -19811,8 +19923,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    EXAMPLE 1 The call:

    -          #include <stdio.h>
    -          #include <wchar.h>
    +          #include <stdio.h>
    +          #include <wchar.h>
               /* ... */
               int n, i; float x; wchar_t name[50];
               n = fwscanf(stdin, L"%d%f%ls", &i, &x, name);
    @@ -19825,8 +19937,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    EXAMPLE 2 The call:

    -          #include <stdio.h>
    -          #include <wchar.h>
    +          #include <stdio.h>
    +          #include <wchar.h>
               /* ... */
               int i; float x; double y;
               fwscanf(stdin, L"%2d%f%*d %lf", &i, &x, &y);
    @@ -19838,7 +19950,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 - Forward references: the wcstod, wcstof, and wcstold functions (7.28.4.1.1), the +

    Forward references: the wcstod, wcstof, and wcstold functions (7.28.4.1.1), the wcstol, wcstoll, wcstoul, and wcstoull functions (7.28.4.1.2), the wcrtomb function (7.28.6.3.3). @@ -19855,7 +19967,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              int swprintf(wchar_t * restrict s,
                   size_t n,
                   const wchar_t * restrict format, ...);
    @@ -19875,7 +19987,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              int swscanf(const wchar_t * restrict s,
                   const wchar_t * restrict format, ...);
    Description
    @@ -19896,9 +20008,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -        #include <stdarg.h>
    -        #include <stdio.h>
    -        #include <wchar.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
    +        #include <wchar.h>
             int vfwprintf(FILE * restrict stream,
                  const wchar_t * restrict format,
                  va_list arg);
    @@ -19916,9 +20028,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 EXAMPLE The following shows the use of the vfwprintf function in a general error-reporting routine.
    -        #include <stdarg.h>
    -        #include <stdio.h>
    -        #include <wchar.h>
    +        #include <stdarg.h>
    +        #include <stdio.h>
    +        #include <wchar.h>
             void error(char *function_name, wchar_t *format, ...)
             {
                   va_list args;
    @@ -19944,9 +20056,9 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
    Synopsis

    -         #include <stdarg.h>
    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdarg.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              int vfwscanf(FILE * restrict stream,
                   const wchar_t * restrict format,
                   va_list arg);
    @@ -19967,8 +20079,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdarg.h>
    -         #include <wchar.h>
    +         #include <stdarg.h>
    +         #include <wchar.h>
              int vswprintf(wchar_t * restrict s,
                   size_t n,
                   const wchar_t * restrict format,
    @@ -19990,8 +20102,8 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
    Synopsis

    -        #include <stdarg.h>
    -        #include <wchar.h>
    +        #include <stdarg.h>
    +        #include <wchar.h>
             int vswscanf(const wchar_t * restrict s,
                  const wchar_t * restrict format,
                  va_list arg);
    @@ -20012,8 +20124,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -        #include <stdarg.h>
    -        #include <wchar.h>
    +        #include <stdarg.h>
    +        #include <wchar.h>
             int vwprintf(const wchar_t * restrict format,
                  va_list arg);
    Description
    @@ -20032,8 +20144,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdarg.h>
    -         #include <wchar.h>
    +         #include <stdarg.h>
    +         #include <wchar.h>
              int vwscanf(const wchar_t * restrict format,
                   va_list arg);
    Description
    @@ -20053,7 +20165,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              int wprintf(const wchar_t * restrict format, ...);
    Description

    @@ -20068,7 +20180,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              int wscanf(const wchar_t * restrict format, ...);
    Description

    @@ -20088,8 +20200,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              wint_t fgetwc(FILE *stream);
    Description

    @@ -20115,8 +20227,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              wchar_t *fgetws(wchar_t * restrict s,
                   int n, FILE * restrict stream);
    Description
    @@ -20140,8 +20252,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              wint_t fputwc(wchar_t c, FILE *stream);
    Description

    @@ -20160,8 +20272,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              int fputws(const wchar_t * restrict s,
                   FILE * restrict stream);
    Description
    @@ -20178,8 +20290,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              int fwide(FILE *stream, int mode);
    Description

    @@ -20201,8 +20313,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              wint_t getwc(FILE *stream);
    Description

    @@ -20218,7 +20330,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              wint_t getwchar(void);
    @@ -20237,8 +20349,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              wint_t putwc(wchar_t c, FILE *stream);
    Description

    @@ -20253,7 +20365,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              wint_t putwchar(wchar_t c);
    Description

    @@ -20266,8 +20378,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <stdio.h>
    -         #include <wchar.h>
    +         #include <stdio.h>
    +         #include <wchar.h>
              wint_t ungetwc(wint_t c, FILE *stream);
    Description

    @@ -20301,7 +20413,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    7.28.4 General wide string utilities

    - The header <wchar.h> declares a number of functions useful for wide string + The header <wchar.h> declares a number of functions useful for wide string manipulation. Various methods are used for determining the lengths of the arrays, but in all cases a wchar_t * argument points to the initial (lowest addressed) element of the array. If an array is accessed beyond the end of an object, the behavior is undefined. @@ -20321,7 +20433,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              double wcstod(const wchar_t * restrict nptr,
                   wchar_t ** restrict endptr);
              float wcstof(const wchar_t * restrict nptr,
    @@ -20403,7 +20515,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
     

    If the subject sequence has the decimal form and at most DECIMAL_DIG (defined in - <float.h>) significant digits, the result should be correctly rounded. If the subject + <float.h>) significant digits, the result should be correctly rounded. If the subject sequence D has the decimal form and more than DECIMAL_DIG significant digits, consider the two bounding, adjacent decimal strings L and U, both having DECIMAL_DIG significant digits, such that the values of L, D, and U satisfy L <= D <= U. @@ -20435,7 +20547,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    331) An implementation may use the n-wchar sequence to determine extra information to be represented in the NaN's significand. -

    332) DECIMAL_DIG, defined in <float.h>, should be sufficiently large that L and U will usually round +

    332) DECIMAL_DIG, defined in <float.h>, should be sufficiently large that L and U will usually round to the same internal floating value, but if not will round to adjacent values. @@ -20443,7 +20555,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             long int wcstol(
                  const wchar_t * restrict nptr,
                  wchar_t ** restrict endptr,
    @@ -20519,7 +20631,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              wchar_t *wcscpy(wchar_t * restrict s1,
                   const wchar_t * restrict s2);
    Description
    @@ -20535,7 +20647,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -          #include <wchar.h>
    +          #include <wchar.h>
               wchar_t *wcsncpy(wchar_t * restrict s1,
                    const wchar_t * restrict s2,
                    size_t n);
    @@ -20561,7 +20673,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -          #include <wchar.h>
    +          #include <wchar.h>
               wchar_t *wmemcpy(wchar_t * restrict s1,
                    const wchar_t * restrict s2,
                    size_t n);
    @@ -20582,7 +20694,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              wchar_t *wmemmove(wchar_t *s1, const wchar_t *s2,
                   size_t n);
    Description
    @@ -20602,7 +20714,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              wchar_t *wcscat(wchar_t * restrict s1,
                   const wchar_t * restrict s2);
    Description
    @@ -20618,7 +20730,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              wchar_t *wcsncat(wchar_t * restrict s1,
                   const wchar_t * restrict s2,
                   size_t n);
    @@ -20649,7 +20761,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              int wcscmp(const wchar_t *s1, const wchar_t *s2);
    Description

    @@ -20665,7 +20777,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              int wcscoll(const wchar_t *s1, const wchar_t *s2);
    Description

    @@ -20686,7 +20798,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              int wcsncmp(const wchar_t *s1, const wchar_t *s2,
                   size_t n);
    Description
    @@ -20704,7 +20816,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              size_t wcsxfrm(wchar_t * restrict s1,
                   const wchar_t * restrict s2,
                   size_t n);
    @@ -20734,7 +20846,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             int wmemcmp(const wchar_t *s1, const wchar_t *s2,
                  size_t n);
    Description
    @@ -20753,7 +20865,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wcschr(const wchar_t *s, wchar_t c);
    Description

    @@ -20768,7 +20880,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             size_t wcscspn(const wchar_t *s1, const wchar_t *s2);
    Description

    @@ -20784,7 +20896,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              wchar_t *wcspbrk(const wchar_t *s1, const wchar_t *s2);
    Description

    @@ -20799,7 +20911,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              wchar_t *wcsrchr(const wchar_t *s, wchar_t c);
    Description

    @@ -20814,7 +20926,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              size_t wcsspn(const wchar_t *s1, const wchar_t *s2);
    Description

    @@ -20830,7 +20942,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wcsstr(const wchar_t *s1, const wchar_t *s2);
    Description

    @@ -20847,7 +20959,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wcstok(wchar_t * restrict s1,
                  const wchar_t * restrict s2,
                  wchar_t ** restrict ptr);
    @@ -20889,7 +21001,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    EXAMPLE

    -         #include <wchar.h>
    +         #include <wchar.h>
              static wchar_t str1[] = L"?a???b,,,#c";
              static wchar_t str2[] = L"\t \t";
              wchar_t *t, *ptr1, *ptr2;
    @@ -20904,7 +21016,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              wchar_t *wmemchr(const wchar_t *s, wchar_t c,
                   size_t n);
    Description
    @@ -20923,7 +21035,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             size_t wcslen(const wchar_t *s);
    Description

    @@ -20937,7 +21049,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             wchar_t *wmemset(wchar_t *s, wchar_t c, size_t n);
    Description

    @@ -20953,8 +21065,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <time.h>
    -        #include <wchar.h>
    +        #include <time.h>
    +        #include <wchar.h>
             size_t wcsftime(wchar_t * restrict s,
                  size_t maxsize,
                  const wchar_t * restrict format,
    @@ -20981,7 +21093,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
     

    7.28.6 Extended multibyte/wide character conversion utilities

    - The header <wchar.h> declares an extended set of functions useful for conversion + The header <wchar.h> declares an extended set of functions useful for conversion between multibyte characters and wide characters.

    Most of the following functions -- those that are listed as ''restartable'', 7.28.6.3 and @@ -21022,7 +21134,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <wchar.h>                                                                        *
    +        #include <wchar.h>                                                                        *
             wint_t btowc(int c);
    Description

    @@ -21038,7 +21150,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <wchar.h>                                                                        *
    +        #include <wchar.h>                                                                        *
             int wctob(wint_t c);
    Description

    @@ -21057,7 +21169,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <wchar.h>
    +        #include <wchar.h>
             int mbsinit(const mbstate_t *ps);
    Description

    @@ -21087,7 +21199,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              size_t mbrlen(const char * restrict s,
                   size_t n,
                   mbstate_t * restrict ps);
    @@ -21102,14 +21214,14 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    The mbrlen function returns a value between zero and n, inclusive, (size_t)(-2), or (size_t)(-1). - Forward references: the mbrtowc function (7.28.6.3.2). +

    Forward references: the mbrtowc function (7.28.6.3.2).

    7.28.6.3.2 The mbrtowc function
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              size_t mbrtowc(wchar_t * restrict pwc,
                   const char * restrict s,
                   size_t n,
    @@ -21160,7 +21272,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              size_t wcrtomb(char * restrict s,
                   wchar_t wc,
                   mbstate_t * restrict ps);
    @@ -21205,7 +21317,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -          #include <wchar.h>
    +          #include <wchar.h>
               size_t mbsrtowcs(wchar_t * restrict dst,
                    const char ** restrict src,
                    size_t len,
    @@ -21248,7 +21360,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
    Synopsis

    -         #include <wchar.h>
    +         #include <wchar.h>
              size_t wcsrtombs(char * restrict dst,
                   const wchar_t ** restrict src,
                   size_t len,
    @@ -21293,7 +21405,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
     
     

    7.29.1 Introduction

    - The header <wctype.h> defines one macro, and declares three data types and many + The header <wctype.h> defines one macro, and declares three data types and many functions.339)

    The types declared are @@ -21337,7 +21449,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    7.29.2 Wide character classification utilities

    - The header <wctype.h> declares several functions useful for classifying wide + The header <wctype.h> declares several functions useful for classifying wide characters.

    The term printing wide character refers to a member of a locale-specific set of wide @@ -21355,7 +21467,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 character classification function from 7.4.1 returns true, except that the iswgraph and iswpunct functions may differ with respect to wide characters other than L' ' that are both printing and white-space wide characters.340) - Forward references: the wctob function (7.28.6.1.2). +

    Forward references: the wctob function (7.28.6.1.2).

    footnotes

    340) For example, if the expression isalpha(wctob(wc)) evaluates to true, then the call @@ -21368,7 +21480,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswalnum(wint_t wc);
    Description

    @@ -21379,7 +21491,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswalpha(wint_t wc);
    Description

    @@ -21399,7 +21511,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswblank(wint_t wc);
    Description

    @@ -21413,7 +21525,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswcntrl(wint_t wc);
    Description

    @@ -21423,7 +21535,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswdigit(wint_t wc);
    Description

    @@ -21434,7 +21546,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswgraph(wint_t wc);
    @@ -21456,7 +21568,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswlower(wint_t wc);
    Description

    @@ -21468,7 +21580,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswprint(wint_t wc);
    Description

    @@ -21478,7 +21590,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswpunct(wint_t wc);
    Description

    @@ -21490,7 +21602,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              int iswspace(wint_t wc);
    @@ -21506,7 +21618,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             int iswupper(wint_t wc);
    Description

    @@ -21518,7 +21630,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             int iswxdigit(wint_t wc);
    Description

    @@ -21535,7 +21647,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             int iswctype(wint_t wc, wctype_t desc);
    Description

    @@ -21564,13 +21676,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 The iswctype function returns nonzero (true) if and only if the value of the wide character wc has the property described by desc. If desc is zero, the iswctype function returns zero (false). - Forward references: the wctype function (7.29.2.2.2). +

    Forward references: the wctype function (7.29.2.2.2).

    7.29.2.2.2 The wctype function
    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              wctype_t wctype(const char *property);
    Description

    @@ -21588,7 +21700,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    7.29.3 Wide character case mapping utilities

    - The header <wctype.h> declares several functions useful for mapping wide characters. + The header <wctype.h> declares several functions useful for mapping wide characters.

    7.29.3.1 Wide character case mapping functions
    @@ -21596,7 +21708,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             wint_t towlower(wint_t wc);
    Description

    @@ -21613,7 +21725,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -        #include <wctype.h>
    +        #include <wctype.h>
             wint_t towupper(wint_t wc);
    Description

    @@ -21637,7 +21749,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              wint_t towctrans(wint_t wc, wctrans_t desc);
    Description

    @@ -21659,7 +21771,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Synopsis

    -         #include <wctype.h>
    +         #include <wctype.h>
              wctrans_t wctrans(const char *property);
    Description

    @@ -21688,32 +21800,32 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 cerfc clog10 clgamma cexp2 clog1p ctgamma

    and the same names suffixed with f or l may be added to the declarations in the - <complex.h> header. + <complex.h> header.

    7.30.2 Character handling

    Function names that begin with either is or to, and a lowercase letter may be added to - the declarations in the <ctype.h> header. + the declarations in the <ctype.h> header.

    7.30.3 Errors

    Macros that begin with E and a digit or E and an uppercase letter may be added to the - declarations in the <errno.h> header. + declarations in the <errno.h> header.

    7.30.4 Format conversion of integer types

    Macro names beginning with PRI or SCN followed by any lowercase letter or X may be - added to the macros defined in the <inttypes.h> header. + added to the macros defined in the <inttypes.h> header.

    7.30.5 Localization

    Macros that begin with LC_ and an uppercase letter may be added to the definitions in - the <locale.h> header. + the <locale.h> header.

    7.30.6 Signal handling

    Macros that begin with either SIG and an uppercase letter or SIG_ and an uppercase - letter may be added to the definitions in the <signal.h> header. + letter may be added to the definitions in the <signal.h> header.

    7.30.7 Boolean type and values

    @@ -21723,9 +21835,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    7.30.8 Integer types

    Typedef names beginning with int or uint and ending with _t may be added to the - types defined in the <stdint.h> header. Macro names beginning with INT or UINT + types defined in the <stdint.h> header. Macro names beginning with INT or UINT and ending with _MAX, _MIN, or _C may be added to the macros defined in the - <stdint.h> header. + <stdint.h> header.

    7.30.9 Input/output

    @@ -21739,26 +21851,26 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    7.30.10 General utilities

    Function names that begin with str and a lowercase letter may be added to the - declarations in the <stdlib.h> header. + declarations in the <stdlib.h> header.

    7.30.11 String handling

    Function names that begin with str, mem, or wcs and a lowercase letter may be added - to the declarations in the <string.h> header. + to the declarations in the <string.h> header.

    7.30.12 Extended multibyte and wide character utilities

    Function names that begin with wcs and a lowercase letter may be added to the - declarations in the <wchar.h> header. + declarations in the <wchar.h> header.

    Lowercase letters may be added to the conversion specifiers and length modifiers in fwprintf and fwscanf. Other characters may be used in extensions.

    7.30.13 Wide character classification and mapping utilities

    - <wctype.h> + <wctype.h>

    Function names that begin with is or to and a lowercase letter may be added to the - declarations in the <wctype.h> header. + declarations in the <wctype.h> header.

    Annex A

    @@ -23689,7 +23801,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
                                         (informative)
                                  Implementation limits
    - The contents of the header <limits.h> are given below, in alphabetical order. The + The contents of the header <limits.h> are given below, in alphabetical order. The minimum magnitudes shown shall be replaced by implementation-defined magnitudes with the same sign. The values shall all be constant expressions suitable for use in #if preprocessing directives. The components are described further in 5.2.4.2.1. @@ -23714,7 +23826,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 #define UINT_MAX 65535 #define ULONG_MAX 4294967295 #define ULLONG_MAX 18446744073709551615
    - The contents of the header <float.h> are given below. All integer values, except + The contents of the header <float.h> are given below. All integer values, except FLT_ROUNDS, shall be constant expressions suitable for use in #if preprocessing directives; all floating values shall be constant expressions. The components are described further in 5.2.4.2.2. @@ -23830,7 +23942,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    This specification does not define the behavior of signaling NaNs.346) It generally uses the term NaN to denote quiet NaNs. The NAN and INFINITY macros and the nan - functions in <math.h> provide designations for IEC 60559 NaNs and infinities. + functions in <math.h> provide designations for IEC 60559 NaNs and infinities.

    footnotes

    346) Since NaNs created by IEC 60559 operations are always quiet, quiet NaNs (along with infinities) are @@ -23844,13 +23956,13 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    • The +, -, *, and / operators provide the IEC 60559 add, subtract, multiply, and divide operations. -
    • The sqrt functions in <math.h> provide the IEC 60559 square root operation. -
    • The remainder functions in <math.h> provide the IEC 60559 remainder - operation. The remquo functions in <math.h> provide the same operation but +
    • The sqrt functions in <math.h> provide the IEC 60559 square root operation. +
    • The remainder functions in <math.h> provide the IEC 60559 remainder + operation. The remquo functions in <math.h> provide the same operation but with additional information. -
    • The rint functions in <math.h> provide the IEC 60559 operation that rounds a +
    • The rint functions in <math.h> provide the IEC 60559 operation that rounds a floating-point number to an integer value (in the same precision). The nearbyint - functions in <math.h> provide the nearbyinteger function recommended in the + functions in <math.h> provide the nearbyinteger function recommended in the Appendix to ANSI/IEEE 854.
    • The conversions for floating types provide the IEC 60559 conversions between floating-point precisions. @@ -23858,60 +23970,60 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 from integer to floating point.
    • The conversions from floating to integer types provide IEC 60559-like conversions but always round toward zero. -
    • The lrint and llrint functions in <math.h> provide the IEC 60559 +
    • The lrint and llrint functions in <math.h> provide the IEC 60559 conversions, which honor the directed rounding mode, from floating point to the long int and long long int integer formats. The lrint and llrint functions can be used to implement IEC 60559 conversions from floating to other integer formats.
    • The translation time conversion of floating constants and the strtod, strtof, - strtold, fprintf, fscanf, and related library functions in <stdlib.h>, + strtold, fprintf, fscanf, and related library functions in <stdlib.h>, - <stdio.h>, and <wchar.h> provide IEC 60559 binary-decimal conversions. The - strtold function in <stdlib.h> provides the conv function recommended in the + <stdio.h>, and <wchar.h> provide IEC 60559 binary-decimal conversions. The + strtold function in <stdlib.h> provides the conv function recommended in the Appendix to ANSI/IEEE 854.
    • The relational and equality operators provide IEC 60559 comparisons. IEC 60559 identifies a need for additional comparison predicates to facilitate writing code that accounts for NaNs. The comparison macros (isgreater, isgreaterequal, - isless, islessequal, islessgreater, and isunordered) in <math.h> + isless, islessequal, islessgreater, and isunordered) in <math.h> supplement the language operators to address this need. The islessgreater and isunordered macros provide respectively a quiet version of the <> predicate and the unordered predicate recommended in the Appendix to IEC 60559.
    • The feclearexcept, feraiseexcept, and fetestexcept functions in - <fenv.h> provide the facility to test and alter the IEC 60559 floating-point + <fenv.h> provide the facility to test and alter the IEC 60559 floating-point exception status flags. The fegetexceptflag and fesetexceptflag - functions in <fenv.h> provide the facility to save and restore all five status flags at + functions in <fenv.h> provide the facility to save and restore all five status flags at one time. These functions are used in conjunction with the type fexcept_t and the floating-point exception macros (FE_INEXACT, FE_DIVBYZERO, - FE_UNDERFLOW, FE_OVERFLOW, FE_INVALID) also in <fenv.h>. -
    • The fegetround and fesetround functions in <fenv.h> provide the facility + FE_UNDERFLOW, FE_OVERFLOW, FE_INVALID) also in <fenv.h>. +
    • The fegetround and fesetround functions in <fenv.h> provide the facility to select among the IEC 60559 directed rounding modes represented by the rounding - direction macros in <fenv.h> (FE_TONEAREST, FE_UPWARD, FE_DOWNWARD, + direction macros in <fenv.h> (FE_TONEAREST, FE_UPWARD, FE_DOWNWARD, FE_TOWARDZERO) and the values 0, 1, 2, and 3 of FLT_ROUNDS are the IEC 60559 directed rounding modes.
    • The fegetenv, feholdexcept, fesetenv, and feupdateenv functions in - <fenv.h> provide a facility to manage the floating-point environment, comprising + <fenv.h> provide a facility to manage the floating-point environment, comprising the IEC 60559 status flags and control modes. -
    • The copysign functions in <math.h> provide the copysign function +
    • The copysign functions in <math.h> provide the copysign function recommended in the Appendix to IEC 60559. -
    • The fabs functions in <math.h> provide the abs function recommended in the +
    • The fabs functions in <math.h> provide the abs function recommended in the Appendix to IEC 60559.
    • The unary minus (-) operator provides the unary minus (-) operation recommended in the Appendix to IEC 60559. -
    • The scalbn and scalbln functions in <math.h> provide the scalb function +
    • The scalbn and scalbln functions in <math.h> provide the scalb function recommended in the Appendix to IEC 60559. -
    • The logb functions in <math.h> provide the logb function recommended in the +
    • The logb functions in <math.h> provide the logb function recommended in the Appendix to IEC 60559, but following the newer specifications in ANSI/IEEE 854. -
    • The nextafter and nexttoward functions in <math.h> provide the nextafter +
    • The nextafter and nexttoward functions in <math.h> provide the nextafter function recommended in the Appendix to IEC 60559 (but with a minor change to better handle signed zeros). -
    • The isfinite macro in <math.h> provides the finite function recommended in +
    • The isfinite macro in <math.h> provides the finite function recommended in the Appendix to IEC 60559. -
    • The isnan macro in <math.h> provides the isnan function recommended in the +
    • The isnan macro in <math.h> provides the isnan function recommended in the Appendix to IEC 60559. -
    • The signbit macro and the fpclassify macro in <math.h>, used in +
    • The signbit macro and the fpclassify macro in <math.h>, used in conjunction with the number classification macros (FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO), provide the facility of the class function recommended in the Appendix to IEC 60559 (except that the classification @@ -23934,7 +24046,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 conversions raise the ''inexact'' floating-point exception for non-integer in-range values. In those cases where it matters, library functions can be used to effect such conversions with or without raising the ''inexact'' floating-point exception. See rint, lrint, llrint, and nearbyint in - <math.h>. + <math.h>.

      F.5 Binary-decimal conversion

      @@ -23985,7 +24097,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      F.8 Floating-point environment

      - The floating-point environment defined in <fenv.h> includes the IEC 60559 floating- + The floating-point environment defined in <fenv.h> includes the IEC 60559 floating- point exception status flags and directed-rounding control modes. It includes also IEC 60559 dynamic rounding precision and trap enablement modes, if the implementation supports them.350) @@ -23999,7 +24111,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 IEC 60559 requires that floating-point operations implicitly raise floating-point exception status flags, and that rounding control modes can be set explicitly to affect result values of floating-point operations. When the state for the FENV_ACCESS pragma (defined in - <fenv.h>) is ''on'', these changes to the floating-point state are treated as side effects + <fenv.h>) is ''on'', these changes to the floating-point state are treated as side effects which respect sequence points.351) @@ -24061,7 +24173,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      -          #include <fenv.h>
      +          #include <fenv.h>
                 #pragma STDC FENV_ACCESS ON
                 void f(void)
                 {
      @@ -24097,7 +24209,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
        EXAMPLE
       

      -          #include <fenv.h>
      +          #include <fenv.h>
                 #pragma STDC FENV_ACCESS ON
                 void f(void)
                 {
      @@ -24139,7 +24251,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
        specifications (including conformance to IEC 60559). They do not change flags or modes
        (so as to be detectable by the user) in any other cases.
       

      - If the argument to the feraiseexcept function in <fenv.h> represents IEC 60559 + If the argument to the feraiseexcept function in <fenv.h> represents IEC 60559 valid coincident floating-point exceptions for atomic operations (namely ''overflow'' and ''inexact'', or ''underflow'' and ''inexact''), then ''overflow'' or ''underflow'' is raised before ''inexact''. @@ -24160,7 +24272,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Concern about side effects may inhibit code motion and removal of seemingly useless code. For example, in

      -          #include <fenv.h>
      +          #include <fenv.h>
                 #pragma STDC FENV_ACCESS ON
                 void f(double x)
                 {
      @@ -24307,16 +24419,16 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
       

      F.10 Mathematics

      - This subclause contains specifications of <math.h> facilities that are particularly suited + This subclause contains specifications of <math.h> facilities that are particularly suited for IEC 60559 implementations.

      The Standard C macro HUGE_VAL and its float and long double analogs, HUGE_VALF and HUGE_VALL, expand to expressions whose values are positive infinities.

      - Special cases for functions in <math.h> are covered directly or indirectly by + Special cases for functions in <math.h> are covered directly or indirectly by IEC 60559. The functions that IEC 60559 specifies directly are identified in F.3. The - other functions in <math.h> treat infinities, NaNs, signed zeros, subnormals, and + other functions in <math.h> treat infinities, NaNs, signed zeros, subnormals, and (provided the state of the FENV_ACCESS pragma is ''on'') the floating-point status flags in a manner consistent with the basic arithmetic operations covered by IEC 60559.

      @@ -24340,7 +24452,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 unspecified, unless explicitly specified otherwise.

      Whether or when library functions raise an undeserved ''underflow'' floating-point - exception is unspecified.359) Otherwise, as implied by F.8.6, the <math.h> functions do + exception is unspecified.359) Otherwise, as implied by F.8.6, the <math.h> functions do not raise spurious floating-point exceptions (detectable by the user), other than the ''inexact'' floating-point exception.

      @@ -24350,7 +24462,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Functions with a NaN argument return a NaN result and raise no floating-point exception, except where stated otherwise.

      - The specifications in the following subclauses append to the definitions in <math.h>. + The specifications in the following subclauses append to the definitions in <math.h>. For families of functions, the specifications apply to all of the functions even though only the principal function is shown. Unless otherwise specified, where the symbol ''(+-)'' occurs in both an argument and the result, the result has the same sign as the argument. @@ -24615,8 +24727,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      modf behaves as though implemented by

      -         #include <math.h>
      -         #include <fenv.h>
      +         #include <math.h>
      +         #include <fenv.h>
                #pragma STDC FENV_ACCESS ON
                double modf(double value, double *iptr)
                {
      @@ -24753,8 +24865,8 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
        The double version of ceil behaves as though implemented by
       

      -        #include <math.h>
      -        #include <fenv.h>
      +        #include <math.h>
      +        #include <fenv.h>
               #pragma STDC FENV_ACCESS ON
               double ceil(double x)
               {
      @@ -24817,8 +24929,8 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       

      The double version of round behaves as though implemented by

      -         #include <math.h>
      -         #include <fenv.h>
      +         #include <math.h>
      +         #include <fenv.h>
                #pragma STDC FENV_ACCESS ON
                double round(double x)
                {
      @@ -24874,8 +24986,8 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
        The double version of fmod behaves as though implemented by
       
       
      -        #include <math.h>
      -        #include <fenv.h>
      +        #include <math.h>
      +        #include <fenv.h>
               #pragma STDC FENV_ACCESS ON
               double fmod(double x, double y)
               {
      @@ -25149,8 +25261,8 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
       

      -          #include <math.h>
      -          #include <complex.h>
      +          #include <math.h>
      +          #include <complex.h>
                 /* Multiply z * w ... */
                 double complex _Cmultd(double complex z, double complex w)
                 {
      @@ -25204,8 +25316,8 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
       
       

      -         #include <math.h>
      -         #include <complex.h>
      +         #include <math.h>
      +         #include <complex.h>
                /* Divide z / w ... */
                double complex _Cdivd(double complex z, double complex w)
                {
      @@ -25295,7 +25407,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
        the provisions of 7.1.3, a program may undefine and then perhaps redefine the macro
        imaginary.
       

      - This subclause contains specifications for the <complex.h> functions that are + This subclause contains specifications for the <complex.h> functions that are particularly suited to IEC 60559 implementations. For families of functions, the specifications apply to all of the functions even though only the principal function is @@ -25638,7 +25750,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      H.2.1 Boolean type

      The LIA-1 data type Boolean is implemented by the C data type bool with values of - true and false, all from <stdbool.h>. + true and false, all from <stdbool.h>.

      H.2.2 Integer types

      @@ -25805,7 +25917,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      H.3.1.1 Indicators

      - C's <fenv.h> status flags are compatible with the LIA-1 indicators. + C's <fenv.h> status flags are compatible with the LIA-1 indicators.

      The following mapping is for floating-point types: undefined FE_INVALID, FE_DIVBYZERO @@ -25825,7 +25937,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 and ''hard to ignore'' message (see LIA-1 subclause 6.1.2)

      LIA-1 does not make the distinction between floating-point and integer for ''undefined''. - This documentation makes that distinction because <fenv.h> covers only the floating- + This documentation makes that distinction because <fenv.h> covers only the floating- point indicators.

      H.3.1.2 Traps
      @@ -25999,9 +26111,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
    • Whether conversion of non-integer IEC 60559 floating values to integer raises the ''inexact'' floating-point exception (F.4). -
    • Whether or when library functions in <math.h> raise the ''inexact'' floating-point +
    • Whether or when library functions in <math.h> raise the ''inexact'' floating-point exception in an IEC 60559 conformant implementation (F.10). -
    • Whether or when library functions in <math.h> raise an undeserved ''underflow'' +
    • Whether or when library functions in <math.h> raise an undeserved ''underflow'' floating-point exception in an IEC 60559 conformant implementation (F.10).
    • The exponent value stored by frexp for a NaN or infinity (F.10.3.4).
    • The numeric result returned by the lrint, llrint, lround, and llround @@ -26590,10 +26702,10 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      • The accuracy of the floating-point operations and of the library functions in - <math.h> and <complex.h> that return floating-point results (5.2.4.2.2). + <math.h> and <complex.h> that return floating-point results (5.2.4.2.2).
      • The accuracy of the conversions between floating-point internal representations and - string representations performed by the library functions in <stdio.h>, - <stdlib.h>, and <wchar.h> (5.2.4.2.2). + string representations performed by the library functions in <stdio.h>, + <stdlib.h>, and <wchar.h> (5.2.4.2.2).
      • The rounding behaviors characterized by non-standard values of FLT_ROUNDS (5.2.4.2.2).
      • The evaluation methods characterized by non-standard negative values of @@ -26768,7 +26880,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
      • The era for the clock function (7.26.2.1).
      • The replacement string for the %Z specifier to the strftime, and wcsftime functions in the "C" locale (7.26.3.5, 7.28.5.1). -
      • Whether the functions in <math.h> honor the rounding direction mode in an +
      • Whether the functions in <math.h> honor the rounding direction mode in an IEC 60559 conformant implementation, unless explicitly specified otherwise (F.10).
      @@ -26777,7 +26889,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

      • The values or expressions assigned to the macros specified in the headers - <float.h>, <limits.h>, and <stdint.h> (5.2.4.2, 7.20.2, 7.20.3). + <float.h>, <limits.h>, and <stdint.h> (5.2.4.2, 7.20.2, 7.20.3).
      • The result of attempting to indirectly access an object with automatic or thread storage duration from a thread other than the one with which it is associated (6.2.4).
      • The number, order, and encoding of bytes in any object (when not explicitly specified @@ -26927,7 +27039,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

        J.5.17 Math error reporting

        - Functions declared in <complex.h> and <math.h> raise SIGFPE to report errors + Functions declared in <complex.h> and <math.h> raise SIGFPE to report errors instead of, or in addition to, setting errno or raising floating-point exceptions (7.3, 7.12). @@ -27056,7 +27168,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Implementations shall verify that the runtime-constraints for a function are not violated by the program. If a runtime-constraint is violated, the implementation shall call the currently registered runtime-constraint handler (see set_constraint_handler_s - in <stdlib.h>). Multiple runtime-constraint violations in the same call to a library + in <stdlib.h>). Multiple runtime-constraint violations in the same call to a library function result in only one call to the runtime-constraint handler. It is unspecified which one of the multiple runtime-constraint violations cause the handler to be called.

        @@ -27083,7 +27195,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

        K.3.2 Errors

        - The header <errno.h> defines a type. + The header <errno.h> defines a type.

        The type is

        @@ -27098,7 +27210,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         
         

        K.3.3 Common definitions

        - The header <stddef.h> defines a type. + The header <stddef.h> defines a type.

        The type is

        @@ -27106,12 +27218,12 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
          which is the type size_t.372)
         
         
        footnotes
        -

        372) See the description of the RSIZE_MAX macro in <stdint.h>. +

        372) See the description of the RSIZE_MAX macro in <stdint.h>.

        K.3.4 Integer types

        - The header <stdint.h> defines a macro. + The header <stdint.h> defines a macro.

        The macro is

        @@ -27142,7 +27254,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         
         

        K.3.5 Input/output

        - The header <stdio.h> defines several macros and two types. + The header <stdio.h> defines several macros and two types.

        The macros are

        @@ -27170,7 +27282,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <stdio.h>
        +        #include <stdio.h>
                 errno_t tmpfile_s(FILE * restrict * restrict streamptr);
        Runtime-constraints

        @@ -27205,7 +27317,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdio.h>
        +         #include <stdio.h>
                  errno_t tmpnam_s(char *s, rsize_t maxsize);
        Runtime-constraints

        @@ -27270,7 +27382,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <stdio.h>
        +        #include <stdio.h>
                 errno_t fopen_s(FILE * restrict * restrict streamptr,
                      const char * restrict filename,
                      const char * restrict mode);
        @@ -27353,7 +27465,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <stdio.h>
        +        #include <stdio.h>
                 errno_t freopen_s(FILE * restrict * restrict newstreamptr,
                      const char * restrict filename,
                      const char * restrict mode,
        @@ -27401,7 +27513,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                   #define __STDC_WANT_LIB_EXT1__ 1
        -          #include <stdio.h>
        +          #include <stdio.h>
                   int fprintf_s(FILE * restrict stream,
                        const char * restrict format, ...);
        Runtime-constraints @@ -27443,7 +27555,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdio.h>
        +         #include <stdio.h>
                  int fscanf_s(FILE * restrict stream,
                       const char * restrict format, ...);
        Runtime-constraints @@ -27478,7 +27590,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 EXAMPLE 1 The call:
                   #define __STDC_WANT_LIB_EXT1__ 1
        -          #include <stdio.h>
        +          #include <stdio.h>
                   /* ... */
                   int n, i; float x; char name[50];
                   n = fscanf_s(stdin, "%d%f%s", &i, &x, name, (rsize_t) 50);
        @@ -27492,7 +27604,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 EXAMPLE 2 The call:
                   #define __STDC_WANT_LIB_EXT1__ 1
        -          #include <stdio.h>
        +          #include <stdio.h>
                   /* ... */
                   int n; char s[5];
                   n = fscanf_s(stdin, "%s", s, sizeof s);
        @@ -27525,7 +27637,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                   #define __STDC_WANT_LIB_EXT1__ 1
        -          #include <stdio.h>
        +          #include <stdio.h>
                   int printf_s(const char * restrict format, ...);
        Runtime-constraints

        @@ -27559,7 +27671,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <stdio.h>
        +        #include <stdio.h>
                 int scanf_s(const char * restrict format, ...);
        Runtime-constraints

        @@ -27585,7 +27697,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <stdio.h>
        +        #include <stdio.h>
                 int snprintf_s(char * restrict s, rsize_t n,
                      const char * restrict format, ...);
        Runtime-constraints @@ -27626,7 +27738,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                   #define __STDC_WANT_LIB_EXT1__ 1
        -          #include <stdio.h>
        +          #include <stdio.h>
                   int sprintf_s(char * restrict s, rsize_t n,
                        const char * restrict format, ...);
        Runtime-constraints @@ -27670,7 +27782,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <stdio.h>
        +        #include <stdio.h>
                 int sscanf_s(const char * restrict s,
                      const char * restrict format, ...);
        Runtime-constraints @@ -27700,8 +27812,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                   #define __STDC_WANT_LIB_EXT1__ 1
        -          #include <stdarg.h>
        -          #include <stdio.h>
        +          #include <stdarg.h>
        +          #include <stdio.h>
                   int vfprintf_s(FILE * restrict stream,
                        const char * restrict format,
                        va_list arg);
        @@ -27735,8 +27847,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                   #define __STDC_WANT_LIB_EXT1__ 1
        -          #include <stdarg.h>
        -          #include <stdio.h>
        +          #include <stdarg.h>
        +          #include <stdio.h>
                   int vfscanf_s(FILE * restrict stream,
                        const char * restrict format,
                        va_list arg);
        @@ -27777,8 +27889,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                   #define __STDC_WANT_LIB_EXT1__ 1
        -          #include <stdarg.h>
        -          #include <stdio.h>
        +          #include <stdarg.h>
        +          #include <stdio.h>
                   int vprintf_s(const char * restrict format,
                        va_list arg);
        Runtime-constraints @@ -27812,8 +27924,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdarg.h>
        -         #include <stdio.h>
        +         #include <stdarg.h>
        +         #include <stdio.h>
                  int vscanf_s(const char * restrict format,
                       va_list arg);
        Runtime-constraints @@ -27853,8 +27965,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                   #define __STDC_WANT_LIB_EXT1__ 1
        -          #include <stdarg.h>
        -          #include <stdio.h>
        +          #include <stdarg.h>
        +          #include <stdio.h>
                   int vsnprintf_s(char * restrict s, rsize_t n,
                        const char * restrict format,
                        va_list arg);
        @@ -27900,8 +28012,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                   #define __STDC_WANT_LIB_EXT1__ 1
        -          #include <stdarg.h>
        -          #include <stdio.h>
        +          #include <stdarg.h>
        +          #include <stdio.h>
                   int vsprintf_s(char * restrict s, rsize_t n,
                        const char * restrict format,
                        va_list arg);
        @@ -27947,8 +28059,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <stdarg.h>
        -        #include <stdio.h>
        +        #include <stdarg.h>
        +        #include <stdio.h>
                 int vsscanf_s(const char * restrict s,
                      const char * restrict format,
                      va_list arg);
        @@ -27986,7 +28098,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <stdio.h>
        +        #include <stdio.h>
                 char *gets_s(char *s, rsize_t n);
        @@ -28040,7 +28152,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

        K.3.6 General utilities

        - The header <stdlib.h> defines three types. + The header <stdlib.h> defines three types.

        The types are

        @@ -28065,7 +28177,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdlib.h>
        +         #include <stdlib.h>
                  constraint_handler_t set_constraint_handler_s(
                       constraint_handler_t handler);
        Description
        @@ -28107,7 +28219,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdlib.h>
        +         #include <stdlib.h>
                  void abort_handler_s(
                       const char * restrict msg,
                       void * restrict ptr,
        @@ -28138,7 +28250,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdlib.h>
        +         #include <stdlib.h>
                  void ignore_handler_s(
                       const char * restrict msg,
                       void * restrict ptr,
        @@ -28167,7 +28279,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdlib.h>
        +         #include <stdlib.h>
                  errno_t getenv_s(size_t * restrict len,
                             char * restrict value, rsize_t maxsize,
                             const char * restrict name);
        @@ -28248,7 +28360,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                   #define __STDC_WANT_LIB_EXT1__ 1
        -          #include <stdlib.h>
        +          #include <stdlib.h>
                   void *bsearch_s(const void *key, const void *base,
                        rsize_t nmemb, rsize_t size,
                        int (*compar)(const void *k, const void *y,
        @@ -28299,7 +28411,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdlib.h>
        +         #include <stdlib.h>
                  errno_t qsort_s(void *base, rsize_t nmemb, rsize_t size,
                       int (*compar)(const void *x, const void *y,
                                       void *context),
        @@ -28361,7 +28473,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdlib.h>
        +         #include <stdlib.h>
                  errno_t wctomb_s(int * restrict status,
                       char * restrict s,
                       rsize_t smax,
        @@ -28416,7 +28528,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         
        Synopsis

        -         #include <stdlib.h>
        +         #include <stdlib.h>
                  errno_t mbstowcs_s(size_t * restrict retval,
                       wchar_t * restrict dst, rsize_t dstmax,
                       const char * restrict src, rsize_t len);
        @@ -28474,7 +28586,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
        Synopsis

        -          #include <stdlib.h>
        +          #include <stdlib.h>
                   errno_t wcstombs_s(size_t * restrict retval,
                        char * restrict dst, rsize_t dstmax,
                        const wchar_t * restrict src, rsize_t len);
        @@ -28549,7 +28661,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

        K.3.7 String handling

        - The header <string.h> defines two types. + The header <string.h> defines two types.

        The types are

        @@ -28566,7 +28678,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <string.h>
        +        #include <string.h>
                 errno_t memcpy_s(void * restrict s1, rsize_t s1max,
                      const void * restrict s2, rsize_t n);
        Runtime-constraints @@ -28593,7 +28705,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <string.h>
        +         #include <string.h>
                  errno_t memmove_s(void *s1, rsize_t s1max,
                       const void *s2, rsize_t n);
        Runtime-constraints @@ -28621,7 +28733,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <string.h>
        +         #include <string.h>
                  errno_t strcpy_s(char * restrict s1,
                       rsize_t s1max,
                       const char * restrict s2);
        @@ -28662,7 +28774,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <string.h>
        +         #include <string.h>
                  errno_t strncpy_s(char * restrict s1,
                       rsize_t s1max,
                       const char * restrict s2,
        @@ -28699,7 +28811,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
          will not be null terminated or that characters will be written past the end of the destination array.
         
                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <string.h>
        +         #include <string.h>
                  /* ... */
                  char src1[100] = "hello";
                  char src2[7] = {'g', 'o', 'o', 'd', 'b', 'y', 'e'};
        @@ -28729,7 +28841,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <string.h>
        +         #include <string.h>
                  errno_t strcat_s(char * restrict s1,
                       rsize_t s1max,
                       const char * restrict s2);
        @@ -28780,7 +28892,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <string.h>
        +         #include <string.h>
                  errno_t strncat_s(char * restrict s1,
                       rsize_t s1max,
                       const char * restrict s2,
        @@ -28821,7 +28933,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
          will not be null terminated or that characters will be written past the end of the destination array.
         
                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <string.h>
        +         #include <string.h>
                  /* ... */
                  char s1[100] = "good";
                  char s2[6] = "hello";
        @@ -28861,7 +28973,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <string.h>
        +         #include <string.h>
                  char *strtok_s(char * restrict s1,
                       rsize_t * restrict s1max,
                       const char * restrict s2,
        @@ -28917,7 +29029,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
          EXAMPLE
         
                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <string.h>
        +         #include <string.h>
                  static char str1[] = "?a???b,,,#c";
                  static char str2[] = "\t \t";
                  char *t, *ptr1, *ptr2;
        @@ -28937,7 +29049,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <string.h>
        +         #include <string.h>
                  errno_t memset_s(void *s, rsize_t smax, int c, rsize_t n)
        Runtime-constraints

        @@ -28966,7 +29078,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <string.h>
        +        #include <string.h>
                 errno_t strerror_s(char *s, rsize_t maxsize,
                      errno_t errnum);
        Runtime-constraints @@ -29001,7 +29113,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <string.h>
        +         #include <string.h>
                  size_t strerrorlen_s(errno_t errnum);
        Description

        @@ -29017,7 +29129,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <string.h>
        +         #include <string.h>
                  size_t strnlen_s(const char *s, size_t maxsize);
        Description

        @@ -29044,7 +29156,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

        K.3.8 Date and time

        - The header <time.h> defines two types. + The header <time.h> defines two types.

        The types are

        @@ -29073,7 +29185,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <time.h>
        +         #include <time.h>
                  errno_t asctime_s(char *s, rsize_t maxsize,
                       const struct tm *timeptr);
        Runtime-constraints @@ -29138,7 +29250,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <time.h>
        +        #include <time.h>
                 errno_t ctime_s(char *s, rsize_t maxsize,
                      const time_t *timer);
        Runtime-constraints @@ -29168,7 +29280,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <time.h>
        +        #include <time.h>
                 struct tm *gmtime_s(const time_t * restrict timer,
                      struct tm * restrict result);
        Runtime-constraints @@ -29192,7 +29304,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                   #define __STDC_WANT_LIB_EXT1__ 1
        -          #include <time.h>
        +          #include <time.h>
                   struct tm *localtime_s(const time_t * restrict timer,
                        struct tm * restrict result);
        Runtime-constraints @@ -29212,7 +29324,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

        K.3.9 Extended multibyte and wide character utilities

        - The header <wchar.h> defines two types. + The header <wchar.h> defines two types.

        The types are

        @@ -29234,7 +29346,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <wchar.h>
        +         #include <wchar.h>
                  int fwprintf_s(FILE * restrict stream,
                       const wchar_t * restrict format, ...);
        Runtime-constraints @@ -29267,8 +29379,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdio.h>
        -         #include <wchar.h>
        +         #include <stdio.h>
        +         #include <wchar.h>
                  int fwscanf_s(FILE * restrict stream,
                       const wchar_t * restrict format, ...);
        Runtime-constraints @@ -29319,7 +29431,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <wchar.h>
        +         #include <wchar.h>
                  int snwprintf_s(wchar_t * restrict s,
                       rsize_t n,
                       const wchar_t * restrict format, ...);
        @@ -29362,7 +29474,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <wchar.h>
        +         #include <wchar.h>
                  int swprintf_s(wchar_t * restrict s, rsize_t n,
                       const wchar_t * restrict format, ...);
        Runtime-constraints @@ -29406,7 +29518,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <wchar.h>
        +         #include <wchar.h>
                  int swscanf_s(const wchar_t * restrict s,
                       const wchar_t * restrict format, ...);
        Runtime-constraints @@ -29436,9 +29548,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdarg.h>
        -         #include <stdio.h>
        -         #include <wchar.h>
        +         #include <stdarg.h>
        +         #include <stdio.h>
        +         #include <wchar.h>
                  int vfwprintf_s(FILE * restrict stream,
                       const wchar_t * restrict format,
                       va_list arg);
        @@ -29472,9 +29584,9 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdarg.h>
        -         #include <stdio.h>
        -         #include <wchar.h>
        +         #include <stdarg.h>
        +         #include <stdio.h>
        +         #include <wchar.h>
                  int vfwscanf_s(FILE * restrict stream,
                       const wchar_t * restrict format, va_list arg);
        @@ -29512,8 +29624,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdarg.h>
        -         #include <wchar.h>
        +         #include <stdarg.h>
        +         #include <wchar.h>
                  int vsnwprintf_s(wchar_t * restrict s,
                       rsize_t n,
                       const wchar_t * restrict format,
        @@ -29557,8 +29669,8 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdarg.h>
        -         #include <wchar.h>
        +         #include <stdarg.h>
        +         #include <wchar.h>
                  int vswprintf_s(wchar_t * restrict s,
                       rsize_t n,
                       const wchar_t * restrict format,
        @@ -29603,8 +29715,8 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdarg.h>
        -         #include <wchar.h>
        +         #include <stdarg.h>
        +         #include <wchar.h>
                  int vswscanf_s(const wchar_t * restrict s,
                       const wchar_t * restrict format,
                       va_list arg);
        @@ -29644,8 +29756,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdarg.h>
        -         #include <wchar.h>
        +         #include <stdarg.h>
        +         #include <wchar.h>
                  int vwprintf_s(const wchar_t * restrict format,
                       va_list arg);
        Runtime-constraints @@ -29682,8 +29794,8 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <stdarg.h>
        -         #include <wchar.h>
        +         #include <stdarg.h>
        +         #include <wchar.h>
                  int vwscanf_s(const wchar_t * restrict format,
                       va_list arg);
        Runtime-constraints @@ -29717,7 +29829,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <wchar.h>
        +         #include <wchar.h>
                  int wprintf_s(const wchar_t * restrict format, ...);
        Runtime-constraints

        @@ -29750,7 +29862,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <wchar.h>
        +        #include <wchar.h>
                 int wscanf_s(const wchar_t * restrict format, ...);
        Runtime-constraints

        @@ -29781,7 +29893,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <wchar.h>
        +         #include <wchar.h>
                  errno_t wcscpy_s(wchar_t * restrict s1,
                       rsize_t s1max,
                       const wchar_t * restrict s2);
        @@ -29826,7 +29938,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <wchar.h>
        +         #include <wchar.h>
                  errno_t wcsncpy_s(wchar_t * restrict s1,
                       rsize_t s1max,
                       const wchar_t * restrict s2,
        @@ -29866,7 +29978,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         
         
                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <wchar.h>
        +         #include <wchar.h>
                  /* ... */
                  wchar_t src1[100] = L"hello";
                  wchar_t src2[7] = {L'g', L'o', L'o', L'd', L'b', L'y', L'e'};
        @@ -29894,7 +30006,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <wchar.h>
        +         #include <wchar.h>
                  errno_t wmemcpy_s(wchar_t * restrict s1,
                       rsize_t s1max,
                       const wchar_t * restrict s2,
        @@ -29923,7 +30035,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <wchar.h>
        +        #include <wchar.h>
                 errno_t wmemmove_s(wchar_t *s1, rsize_t s1max,
                      const wchar_t *s2, rsize_t n);
        Runtime-constraints @@ -29953,7 +30065,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <wchar.h>
        +        #include <wchar.h>
                 errno_t wcscat_s(wchar_t * restrict s1,
                      rsize_t s1max,
                      const wchar_t * restrict s2);
        @@ -30000,7 +30112,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

                   #define __STDC_WANT_LIB_EXT1__ 1
        -          #include <wchar.h>
        +          #include <wchar.h>
                   errno_t wcsncat_s(wchar_t * restrict s1,
                        rsize_t s1max,
                        const wchar_t * restrict s2,
        @@ -30042,7 +30154,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
          array.
         
                   #define __STDC_WANT_LIB_EXT1__ 1
        -          #include <wchar.h>
        +          #include <wchar.h>
                   /* ... */
                   wchar_t s1[100] = L"good";
                   wchar_t s2[6] = L"hello";
        @@ -30082,7 +30194,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                  #define __STDC_WANT_LIB_EXT1__ 1
        -         #include <wchar.h>
        +         #include <wchar.h>
                  wchar_t *wcstok_s(wchar_t * restrict s1,
                       rsize_t * restrict s1max,
                       const wchar_t * restrict s2,
        @@ -30139,7 +30251,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
          EXAMPLE
         
                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <wchar.h>
        +        #include <wchar.h>
                 static wchar_t str1[] = L"?a???b,,,#c";
                 static wchar_t str2[] = L"\t \t";
                 wchar_t *t, *ptr1, *ptr2;
        @@ -30159,7 +30271,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         

                 #define __STDC_WANT_LIB_EXT1__ 1
        -        #include <wchar.h>
        +        #include <wchar.h>
                 size_t wcsnlen_s(const wchar_t *s, size_t maxsize);
        Description

        @@ -30191,7 +30303,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

        Synopsis

        -         #include <wchar.h>
        +         #include <wchar.h>
                  errno_t wcrtomb_s(size_t * restrict retval,
                       char * restrict s, rsize_t smax,
                       wchar_t wc, mbstate_t * restrict ps);
        @@ -30243,7 +30355,7 @@ Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
        Synopsis

        -        #include <wchar.h>
        +        #include <wchar.h>
                 errno_t mbsrtowcs_s(size_t * restrict retval,
                      wchar_t * restrict dst, rsize_t dstmax,
                      const char ** restrict src, rsize_t len,
        @@ -30311,7 +30423,7 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
         
        Synopsis

        -          #include <wchar.h>
        +          #include <wchar.h>
                   errno_t wcsrtombs_s(size_t * restrict retval,
                        char * restrict dst, rsize_t dstmax,
                        const wchar_t ** restrict src, rsize_t len,
        @@ -30576,45 +30688,45 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
          % (remainder operator), 6.2.6.2, 6.5.5                         << (left-shift operator), 6.2.6.2, 6.5.7
          %: (alternative spelling of #), 6.4.6                          <<= (left-shift assignment operator), 6.5.16.2
          %:%: (alternative spelling of ##), 6.4.6                       <= (less-than-or-equal-to operator), 6.5.8
        - %= (remainder assignment operator), 6.5.16.2                   <assert.h> header, 7.2
        - %> (alternative spelling of }), 6.4.6                          <complex.h> header, 5.2.4.2.2, 6.10.8.3, 7.1.2,
        + %= (remainder assignment operator), 6.5.16.2                   <assert.h> header, 7.2
        + %> (alternative spelling of }), 6.4.6                          <complex.h> header, 5.2.4.2.2, 6.10.8.3, 7.1.2,
          & (address operator), 6.3.2.1, 6.5.3.2                              7.3, 7.24, 7.30.1, G.6, J.5.17
        - & (bitwise AND operator), 6.2.6.2, 6.5.10                      <ctype.h> header, 7.4, 7.30.2
        - && (logical AND operator), 5.1.2.4, 6.5.13                     <errno.h> header, 7.5, 7.30.3, K.3.2
        - &= (bitwise AND assignment operator), 6.5.16.2                 <fenv.h> header, 5.1.2.3, 5.2.4.2.2, 7.6, 7.12, F,
        + & (bitwise AND operator), 6.2.6.2, 6.5.10                      <ctype.h> header, 7.4, 7.30.2
        + && (logical AND operator), 5.1.2.4, 6.5.13                     <errno.h> header, 7.5, 7.30.3, K.3.2
        + &= (bitwise AND assignment operator), 6.5.16.2                 <fenv.h> header, 5.1.2.3, 5.2.4.2.2, 7.6, 7.12, F,
          ' ' (space character), 5.1.1.2, 5.2.1, 6.4, 7.4.1.3,                H
        -      7.4.1.10, 7.29.2.1.3                                      <float.h> header, 4, 5.2.4.2.2, 7.7, 7.22.1.3,
        +      7.4.1.10, 7.29.2.1.3                                      <float.h> header, 4, 5.2.4.2.2, 7.7, 7.22.1.3,
          ( ) (cast operator), 6.5.4                                          7.28.4.1.1
        - ( ) (function-call operator), 6.5.2.2                          <inttypes.h> header, 7.8, 7.30.4
        - ( ) (parentheses punctuator), 6.7.6.3, 6.8.4, 6.8.5            <iso646.h> header, 4, 7.9
        - ( ){ } (compound-literal operator), 6.5.2.5                    <limits.h> header, 4, 5.2.4.2.1, 6.2.5, 7.10
        - * (asterisk punctuator), 6.7.6.1, 6.7.6.2                      <locale.h> header, 7.11, 7.30.5
        - * (indirection operator), 6.5.2.1, 6.5.3.2                     <math.h> header, 5.2.4.2.2, 6.5, 7.12, 7.24, F,
        + ( ) (function-call operator), 6.5.2.2                          <inttypes.h> header, 7.8, 7.30.4
        + ( ) (parentheses punctuator), 6.7.6.3, 6.8.4, 6.8.5            <iso646.h> header, 4, 7.9
        + ( ){ } (compound-literal operator), 6.5.2.5                    <limits.h> header, 4, 5.2.4.2.1, 6.2.5, 7.10
        + * (asterisk punctuator), 6.7.6.1, 6.7.6.2                      <locale.h> header, 7.11, 7.30.5
        + * (indirection operator), 6.5.2.1, 6.5.3.2                     <math.h> header, 5.2.4.2.2, 6.5, 7.12, 7.24, F,
          * (multiplication operator), 6.2.6.2, 6.5.5, F.3,                   F.10, J.5.17
        -      G.5.1                                                     <setjmp.h> header, 7.13
        - *= (multiplication assignment operator), 6.5.16.2              <signal.h> header, 7.14, 7.30.6
        - + (addition operator), 6.2.6.2, 6.5.2.1, 6.5.3.2,              <stdalign.h> header, 4, 7.15
        -      6.5.6, F.3, G.5.2                                         <stdarg.h> header, 4, 6.7.6.3, 7.16
        - + (unary plus operator), 6.5.3.3                               <stdatomic.h> header, 6.10.8.3, 7.1.2, 7.17
        - ++ (postfix increment operator), 6.3.2.1, 6.5.2.4               <stdbool.h> header, 4, 7.18, 7.30.7, H
        - ++ (prefix increment operator), 6.3.2.1, 6.5.3.1                <stddef.h> header, 4, 6.3.2.1, 6.3.2.3, 6.4.4.4,
        +      G.5.1                                                     <setjmp.h> header, 7.13
        + *= (multiplication assignment operator), 6.5.16.2              <signal.h> header, 7.14, 7.30.6
        + + (addition operator), 6.2.6.2, 6.5.2.1, 6.5.3.2,              <stdalign.h> header, 4, 7.15
        +      6.5.6, F.3, G.5.2                                         <stdarg.h> header, 4, 6.7.6.3, 7.16
        + + (unary plus operator), 6.5.3.3                               <stdatomic.h> header, 6.10.8.3, 7.1.2, 7.17
        + ++ (postfix increment operator), 6.3.2.1, 6.5.2.4               <stdbool.h> header, 4, 7.18, 7.30.7, H
        + ++ (prefix increment operator), 6.3.2.1, 6.5.3.1                <stddef.h> header, 4, 6.3.2.1, 6.3.2.3, 6.4.4.4,
          += (addition assignment operator), 6.5.16.2
         
               6.4.5, 6.5.3.4, 6.5.6, 7.19, K.3.3                      \x hexadecimal digits (hexadecimal-character
        - <stdint.h> header, 4, 5.2.4.2, 6.10.1, 7.8,                       escape sequence), 6.4.4.4
        + <stdint.h> header, 4, 5.2.4.2, 6.10.1, 7.8,                       escape sequence), 6.4.4.4
               7.20, 7.30.8, K.3.3, K.3.4                              ^ (bitwise exclusive OR operator), 6.2.6.2, 6.5.11
        - <stdio.h> header, 5.2.4.2.2, 7.21, 7.30.9, F,                ^= (bitwise exclusive OR assignment operator),
        + <stdio.h> header, 5.2.4.2.2, 7.21, 7.30.9, F,                ^= (bitwise exclusive OR assignment operator),
               K.3.5                                                        6.5.16.2
        - <stdlib.h> header, 5.2.4.2.2, 7.22, 7.30.10, F,              __alignas_is_defined macro, 7.15
        + <stdlib.h> header, 5.2.4.2.2, 7.22, 7.30.10, F,              __alignas_is_defined macro, 7.15
               K.3.1.4, K.3.6                                          __bool_true_false_are_defined
        - <string.h> header, 7.23, 7.30.11, K.3.7                           macro, 7.18
        - <tgmath.h> header, 7.24, G.7                                 __cplusplus macro, 6.10.8
        - <threads.h> header, 6.10.8.3, 7.1.2, 7.25                    __DATE__ macro, 6.10.8.1
        - <time.h> header, 7.26, K.3.8                                 __FILE__ macro, 6.10.8.1, 7.2.1.1
        - <uchar.h> header, 6.4.4.4, 6.4.5, 7.27                       __func__ identifier, 6.4.2.2, 7.2.1.1
        - <wchar.h> header, 5.2.4.2.2, 7.21.1, 7.28,                   __LINE__ macro, 6.10.8.1, 7.2.1.1
        + <string.h> header, 7.23, 7.30.11, K.3.7                           macro, 7.18
        + <tgmath.h> header, 7.24, G.7                                 __cplusplus macro, 6.10.8
        + <threads.h> header, 6.10.8.3, 7.1.2, 7.25                    __DATE__ macro, 6.10.8.1
        + <time.h> header, 7.26, K.3.8                                 __FILE__ macro, 6.10.8.1, 7.2.1.1
        + <uchar.h> header, 6.4.4.4, 6.4.5, 7.27                       __func__ identifier, 6.4.2.2, 7.2.1.1
        + <wchar.h> header, 5.2.4.2.2, 7.21.1, 7.28,                   __LINE__ macro, 6.10.8.1, 7.2.1.1
               7.30.12, F, K.3.9                                       __STDC_, 6.11.9
        - <wctype.h> header, 7.29, 7.30.13                             __STDC__ macro, 6.10.8.1
        + <wctype.h> header, 7.29, 7.30.13                             __STDC__ macro, 6.10.8.1
          = (equal-sign punctuator), 6.7, 6.7.2.2, 6.7.9               __STDC_ANALYZABLE__ macro, 6.10.8.3, L.1
          = (simple assignment operator), 6.5.16.1                     __STDC_HOSTED__ macro, 6.10.8.1
          == (equality operator), 6.5.9                                __STDC_IEC_559__ macro, 6.10.8.3, F.1
        @@ -31595,41 +31707,41 @@ Index    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
          sscanf_s function, K.3.5.3.7, K.3.5.3.14                        goto, 6.8.6.1
          standard error stream, 7.21.1, 7.21.3, 7.21.10.4                if, 6.8.4.1
          standard headers, 4, 7.1.2                                      iteration, 6.8.5
        -    <assert.h>, 7.2                                              jump, 6.8.6
        -    <complex.h>, 5.2.4.2.2, 6.10.8.3, 7.1.2, 7.3,                labeled, 6.8.1
        +    <assert.h>, 7.2                                              jump, 6.8.6
        +    <complex.h>, 5.2.4.2.2, 6.10.8.3, 7.1.2, 7.3,                labeled, 6.8.1
                  7.24, 7.30.1, G.6, J.5.17                               null, 6.8.3
        -    <ctype.h>, 7.4, 7.30.2                                       return, 6.8.6.4, F.6
        -    <errno.h>, 7.5, 7.30.3, K.3.2                                selection, 6.8.4
        -    <fenv.h>, 5.1.2.3, 5.2.4.2.2, 7.6, 7.12, F, H                sequencing, 6.8
        -    <float.h>, 4, 5.2.4.2.2, 7.7, 7.22.1.3,                      switch, 6.8.4.2
        +    <ctype.h>, 7.4, 7.30.2                                       return, 6.8.6.4, F.6
        +    <errno.h>, 7.5, 7.30.3, K.3.2                                selection, 6.8.4
        +    <fenv.h>, 5.1.2.3, 5.2.4.2.2, 7.6, 7.12, F, H                sequencing, 6.8
        +    <float.h>, 4, 5.2.4.2.2, 7.7, 7.22.1.3,                      switch, 6.8.4.2
                  7.28.4.1.1                                              while, 6.8.5.1
        -    <inttypes.h>, 7.8, 7.30.4                                 static assertions, 6.7.10
        -    <iso646.h>, 4, 7.9                                        static storage duration, 6.2.4
        -    <limits.h>, 4, 5.2.4.2.1, 6.2.5, 7.10                     static storage-class specifier, 6.2.2, 6.2.4, 6.7.1
        -    <locale.h>, 7.11, 7.30.5                                  static, in array declarators, 6.7.6.2, 6.7.6.3
        -    <math.h>, 5.2.4.2.2, 6.5, 7.12, 7.24, F, F.10,            static_assert declaration, 6.7.10
        +    <inttypes.h>, 7.8, 7.30.4                                 static assertions, 6.7.10
        +    <iso646.h>, 4, 7.9                                        static storage duration, 6.2.4
        +    <limits.h>, 4, 5.2.4.2.1, 6.2.5, 7.10                     static storage-class specifier, 6.2.2, 6.2.4, 6.7.1
        +    <locale.h>, 7.11, 7.30.5                                  static, in array declarators, 6.7.6.2, 6.7.6.3
        +    <math.h>, 5.2.4.2.2, 6.5, 7.12, 7.24, F, F.10,            static_assert declaration, 6.7.10
                  J.5.17                                               static_assert macro, 7.2
        -    <setjmp.h>, 7.13                                          stdalign.h header, 4, 7.15
        -    <signal.h>, 7.14, 7.30.6                                  stdarg.h header, 4, 6.7.6.3, 7.16
        -    <stdalign.h>, 4, 7.15                                     stdatomic.h header, 6.10.8.3, 7.1.2, 7.17
        -    <stdarg.h>, 4, 6.7.6.3, 7.16                              stdbool.h header, 4, 7.18, 7.30.7, H
        -    <stdatomic.h>, 6.10.8.3, 7.1.2, 7.17                      STDC, 6.10.6, 6.11.8
        -    <stdbool.h>, 4, 7.18, 7.30.7, H                           stddef.h header, 4, 6.3.2.1, 6.3.2.3, 6.4.4.4,
        -    <stddef.h>, 4, 6.3.2.1, 6.3.2.3, 6.4.4.4,                       6.4.5, 6.5.3.4, 6.5.6, 7.19, K.3.3
        +    <setjmp.h>, 7.13                                          stdalign.h header, 4, 7.15
        +    <signal.h>, 7.14, 7.30.6                                  stdarg.h header, 4, 6.7.6.3, 7.16
        +    <stdalign.h>, 4, 7.15                                     stdatomic.h header, 6.10.8.3, 7.1.2, 7.17
        +    <stdarg.h>, 4, 6.7.6.3, 7.16                              stdbool.h header, 4, 7.18, 7.30.7, H
        +    <stdatomic.h>, 6.10.8.3, 7.1.2, 7.17                      STDC, 6.10.6, 6.11.8
        +    <stdbool.h>, 4, 7.18, 7.30.7, H                           stddef.h header, 4, 6.3.2.1, 6.3.2.3, 6.4.4.4,
        +    <stddef.h>, 4, 6.3.2.1, 6.3.2.3, 6.4.4.4,                       6.4.5, 6.5.3.4, 6.5.6, 7.19, K.3.3
                  6.4.5, 6.5.3.4, 6.5.6, 7.19, K.3.3                   stderr macro, 7.21.1, 7.21.2, 7.21.3
        -    <stdint.h>, 4, 5.2.4.2, 6.10.1, 7.8, 7.20,                stdin macro, 7.21.1, 7.21.2, 7.21.3, 7.21.6.4,
        +    <stdint.h>, 4, 5.2.4.2, 6.10.1, 7.8, 7.20,                stdin macro, 7.21.1, 7.21.2, 7.21.3, 7.21.6.4,
                  7.30.8, K.3.3, K.3.4                                       7.21.7.6, 7.28.2.12, 7.28.3.7, K.3.5.3.4,
        -    <stdio.h>, 5.2.4.2.2, 7.21, 7.30.9, F, K.3.5                    K.3.5.4.1, K.3.9.1.14
        -    <stdlib.h>, 5.2.4.2.2, 7.22, 7.30.10, F,                  stdint.h header, 4, 5.2.4.2, 6.10.1, 7.8, 7.20,
        +    <stdio.h>, 5.2.4.2.2, 7.21, 7.30.9, F, K.3.5                    K.3.5.4.1, K.3.9.1.14
        +    <stdlib.h>, 5.2.4.2.2, 7.22, 7.30.10, F,                  stdint.h header, 4, 5.2.4.2, 6.10.1, 7.8, 7.20,
                  K.3.1.4, K.3.6                                             7.30.8, K.3.3, K.3.4
        -    <string.h>, 7.23, 7.30.11, K.3.7                          stdio.h header, 5.2.4.2.2, 7.21, 7.30.9, F, K.3.5
        -    <tgmath.h>, 7.24, G.7                                     stdlib.h header, 5.2.4.2.2, 7.22, 7.30.10, F,
        -    <threads.h>, 6.10.8.3, 7.1.2, 7.25                              K.3.1.4, K.3.6
        -    <time.h>, 7.26, K.3.8                                     stdout macro, 7.21.1, 7.21.2, 7.21.3, 7.21.6.3,
        -    <uchar.h>, 6.4.4.4, 6.4.5, 7.27                                 7.21.7.8, 7.21.7.9, 7.28.2.11, 7.28.3.9
        -    <wchar.h>, 5.2.4.2.2, 7.21.1, 7.28, 7.30.12,              storage duration, 6.2.4
        +    <string.h>, 7.23, 7.30.11, K.3.7                          stdio.h header, 5.2.4.2.2, 7.21, 7.30.9, F, K.3.5
        +    <tgmath.h>, 7.24, G.7                                     stdlib.h header, 5.2.4.2.2, 7.22, 7.30.10, F,
        +    <threads.h>, 6.10.8.3, 7.1.2, 7.25                              K.3.1.4, K.3.6
        +    <time.h>, 7.26, K.3.8                                     stdout macro, 7.21.1, 7.21.2, 7.21.3, 7.21.6.3,
        +    <uchar.h>, 6.4.4.4, 6.4.5, 7.27                                 7.21.7.8, 7.21.7.9, 7.28.2.11, 7.28.3.9
        +    <wchar.h>, 5.2.4.2.2, 7.21.1, 7.28, 7.30.12,              storage duration, 6.2.4
                  F, K.3.9                                             storage order of array, 6.5.2.1
        -    <wctype.h>, 7.29, 7.30.13                                 storage unit (bit-field), 6.2.6.1, 6.7.2.1
        +    <wctype.h>, 7.29, 7.30.13                                 storage unit (bit-field), 6.2.6.1, 6.7.2.1
          standard input stream, 7.21.1, 7.21.3                        storage-class specifiers, 6.7.1, 6.11.5
          standard integer types, 6.2.5                                strcat function, 7.23.3.1
          standard output stream, 7.21.1, 7.21.3                       strcat_s function, K.3.7.2.1