-[<a name="#pxii" href="pxii">page xii</a>] (<a href="#Contents">Contents</a>)
+[<a name="pxii" href="#pxii">page xii</a>] (<a href="#Contents">Contents</a>)
<a name="Foreword" href="#Foreword"><b> Foreword</b></a>
1 ISO (the International Organization for Standardization) and IEC (the International
-- type-generic expressions
-[<a name="#pxiii" href="pxiii">page xiii</a>] (<a href="#Contents">Contents</a>)
+[<a name="pxiii" href="#pxiii">page xiii</a>] (<a href="#Contents">Contents</a>)
-- static assertions
-- anonymous structures and unions
-[<a name="#pxiv" href="pxiv">page xiv</a>] (<a href="#Contents">Contents</a>)
+[<a name="pxiv" href="#pxiv">page xiv</a>] (<a href="#Contents">Contents</a>)
-- compound literals
-- designated initializers
-- LIA compatibility annex
-[<a name="#pxv" href="pxv">page xv</a>] (<a href="#Contents">Contents</a>)
+[<a name="pxv" href="#pxv">page xv</a>] (<a href="#Contents">Contents</a>)
-- deprecate ungetc at the beginning of a binary file
-- remove deprecation of aliased array parameters
-[<a name="#pxvi" href="pxvi">page xvi</a>] (<a href="#Contents">Contents</a>)
+[<a name="pxvi" href="#pxvi">page xvi</a>] (<a href="#Contents">Contents</a>)
<a name="Introduction" href="#Introduction"><b> Introduction</b></a>
1 With the introduction of new devices and extended character sets, new features may be
-[<a name="#pxvii" href="pxvii">page xvii</a>] (<a href="#Contents">Contents</a>)
+[<a name="pxvii" href="#pxvii">page xvii</a>] (<a href="#Contents">Contents</a>)
-[<a name="#pxviii" href="pxviii">page xviii</a>] (<a href="#Contents">Contents</a>)
+[<a name="pxviii" href="#pxviii">page xviii</a>] (<a href="#Contents">Contents</a>)
1) This International Standard is designed to promote the portability of C programs among a variety of
data-processing systems. It is intended for use by implementors and programmers.
-[<a name="#p1" href="p1">page 1</a>] (<a href="#Contents">Contents</a>)
+[<a name="p1" href="#p1">page 1</a>] (<a href="#Contents">Contents</a>)
<a name="2" href="#2"><b> 2. Normative references</b></a>
-[<a name="#p2" href="p2">page 2</a>] (<a href="#Contents">Contents</a>)
+[<a name="p2" href="#p2">page 2</a>] (<a href="#Contents">Contents</a>)
<a name="3" href="#3"><b> 3. Terms, definitions, and symbols</b></a>
implementation documents
-[<a name="#p3" href="p3">page 3</a>] (<a href="#Contents">Contents</a>)
+[<a name="p3" href="#p3">page 3</a>] (<a href="#Contents">Contents</a>)
2 EXAMPLE An example of locale-specific behavior is whether the islower function returns true for
characters other than the 26 lowercase Latin letters.
1 character
single-byte character
<C> bit representation that fits in a byte
-[<a name="#p4" href="p4">page 4</a>] (<a href="#Contents">Contents</a>)
+[<a name="p4" href="#p4">page 4</a>] (<a href="#Contents">Contents</a>)
<a name="3.7.2" href="#3.7.2"><b> 3.7.2</b></a>
1 multibyte character
either an object of scalar type, or a maximal sequence of adjacent bit-fields all having
nonzero width
-[<a name="#p5" href="p5">page 5</a>] (<a href="#Contents">Contents</a>)
+[<a name="p5" href="#p5">page 5</a>] (<a href="#Contents">Contents</a>)
2 NOTE 1 Two threads of execution can update and access separate memory locations without interfering
with each other.
3 NOTE 2 Implementations that support the extensions in <a href="#K">annex K</a> are required to verify that the runtime-
constraints for a library function are not violated by the program; see <a href="#K.3.1.4">K.3.1.4</a>.
-[<a name="#p6" href="p6">page 6</a>] (<a href="#Contents">Contents</a>)
+[<a name="p6" href="#p6">page 6</a>] (<a href="#Contents">Contents</a>)
<a name="3.19" href="#3.19"><b> 3.19</b></a>
1 value
2) For example, ''Trapping or stopping (if supported) is disabled...'' (<a href="#F.8.2">F.8.2</a>). Note that fetching a trap
representation might perform a trap but is not required to (see <a href="#6.2.6.1">6.2.6.1</a>).
-[<a name="#p7" href="p7">page 7</a>] (<a href="#Contents">Contents</a>)
+[<a name="p7" href="#p7">page 7</a>] (<a href="#Contents">Contents</a>)
<a name="4" href="#4"><b> 4. Conformance</b></a>
4) This implies that a conforming implementation reserves no identifiers other than those explicitly
reserved in this International Standard.
-[<a name="#p8" href="p8">page 8</a>] (<a href="#Contents">Contents</a>)
+[<a name="p8" href="#p8">page 8</a>] (<a href="#Contents">Contents</a>)
7 A conforming program is one that is acceptable to a conforming implementation.5)
8 An implementation shall be accompanied by a document that defines all implementation-
implementations. Conforming programs may depend upon nonportable features of a conforming
implementation.
-[<a name="#p9" href="p9">page 9</a>] (<a href="#Contents">Contents</a>)
+[<a name="p9" href="#p9">page 9</a>] (<a href="#Contents">Contents</a>)
<a name="5" href="#5"><b> 5. Environment</b></a>
and any external representation. The description is conceptual only, and does not specify any
particular implementation.
-[<a name="#p10" href="p10">page 10</a>] (<a href="#Contents">Contents</a>)
+[<a name="p10" href="#p10">page 10</a>] (<a href="#Contents">Contents</a>)
2. Each instance of a backslash character (\) immediately followed by a new-line
character is deleted, splicing physical source lines to form logical source lines.
8) An implementation need not convert all non-corresponding source characters to the same execution
character.
-[<a name="#p11" href="p11">page 11</a>] (<a href="#Contents">Contents</a>)
+[<a name="p11" href="#p11">page 11</a>] (<a href="#Contents">Contents</a>)
<a name="5.1.1.3" href="#5.1.1.3"><b> 5.1.1.3 Diagnostics</b></a>
1 A conforming implementation shall produce at least one diagnostic message (identified in
violation. Of course, an implementation is free to produce any number of diagnostics as long as a
valid program is still correctly translated. It may also successfully translate an invalid program.
-[<a name="#p12" href="p12">page 12</a>] (<a href="#Contents">Contents</a>)
+[<a name="p12" href="#p12">page 12</a>] (<a href="#Contents">Contents</a>)
<a name="5.1.2.2.1" href="#5.1.2.2.1"><b> 5.1.2.2.1 Program startup</b></a>
1 The function called at program startup is named main. The implementation declares no
10) Thus, int can be replaced by a typedef name defined as int, or the type of argv can be written as
char ** argv, and so on.
-[<a name="#p13" href="p13">page 13</a>] (<a href="#Contents">Contents</a>)
+[<a name="p13" href="#p13">page 13</a>] (<a href="#Contents">Contents</a>)
<a name="5.1.2.2.3" href="#5.1.2.2.3"><b> 5.1.2.2.3 Program termination</b></a>
1 If the return type of the main function is a type compatible with int, a return from the
13) The executions of unsequenced evaluations can interleave. Indeterminately sequenced evaluations
cannot interleave, but can be executed in any order.
-[<a name="#p14" href="p14">page 14</a>] (<a href="#Contents">Contents</a>)
+[<a name="p14" href="#p14">page 14</a>] (<a href="#Contents">Contents</a>)
calling a function or accessing a volatile object).
5 When the processing of the abstract machine is interrupted by receipt of a signal, the
overflow, or with overflow wrapping silently to produce the correct result, the actual execution need only
produce the same result, possibly omitting the promotions.
-[<a name="#p15" href="p15">page 15</a>] (<a href="#Contents">Contents</a>)
+[<a name="p15" href="#p15">page 15</a>] (<a href="#Contents">Contents</a>)
12 EXAMPLE 3 Similarly, in the fragment
float f1, f2;
while the original expression would not; nor can the expression be rewritten either as
-[<a name="#p16" href="p16">page 16</a>] (<a href="#Contents">Contents</a>)
+[<a name="p16" href="#p16">page 16</a>] (<a href="#Contents">Contents</a>)
a = ((a + 32765) + b);
or
atomic operations, for example, allow executions inconsistent with a simple interleaving as described
below.
-[<a name="#p17" href="p17">page 17</a>] (<a href="#Contents">Contents</a>)
+[<a name="p17" href="#p17">page 17</a>] (<a href="#Contents">Contents</a>)
5 The library defines a number of atomic operations (<a href="#7.17">7.17</a>) and operations on mutexes
(<a href="#7.25.4">7.25.4</a>) that are specially identified as synchronization operations. These operations play
15) The ''carries a dependency'' relation is a subset of the ''sequenced before'' relation, and is similarly
strictly intra-thread.
-[<a name="#p18" href="p18">page 18</a>] (<a href="#Contents">Contents</a>)
+[<a name="p18" href="#p18">page 18</a>] (<a href="#Contents">Contents</a>)
-- the value of A is used as an operand of B, unless:
o B is an invocation of the kill_dependency macro,
16) The ''dependency-ordered before'' relation is analogous to the ''synchronizes with'' relation, but uses
release/consume in place of release/acquire.
-[<a name="#p19" href="p19">page 19</a>] (<a href="#Contents">Contents</a>)
+[<a name="p19" href="#p19">page 19</a>] (<a href="#Contents">Contents</a>)
19 A visible side effect A on an object M with respect to a value computation B of M
satisfies the conditions:
program semantics. In fact, most single-threaded program transformations continue to be allowed, since
any program that behaves differently as a result must contain undefined behavior.
-[<a name="#p20" href="p20">page 20</a>] (<a href="#Contents">Contents</a>)
+[<a name="p20" href="#p20">page 20</a>] (<a href="#Contents">Contents</a>)
27 NOTE 13 Compiler transformations that introduce assignments to a potentially shared memory location
that would not be modified by the abstract machine are generally precluded by this standard, since such an
-[<a name="#p21" href="p21">page 21</a>] (<a href="#Contents">Contents</a>)
+[<a name="p21" href="#p21">page 21</a>] (<a href="#Contents">Contents</a>)
<a name="5.2" href="#5.2"><b> 5.2 Environmental considerations</b></a>
<a name="5.2.1" href="#5.2.1"><b> 5.2.1 Character sets</b></a>
other characters are encountered in a source file (except in an identifier, a character
constant, a string literal, a header name, a comment, or a preprocessing token that is never
-[<a name="#p22" href="p22">page 22</a>] (<a href="#Contents">Contents</a>)
+[<a name="p22" href="#p22">page 22</a>] (<a href="#Contents">Contents</a>)
converted to a token), the behavior is undefined.
4 A letter is an uppercase letter or a lowercase letter as defined above; in this International
17) The trigraph sequences enable the input of characters that are not defined in the Invariant Code Set as
described in ISO/IEC 646, which is a subset of the seven-bit US ASCII code set.
-[<a name="#p23" href="p23">page 23</a>] (<a href="#Contents">Contents</a>)
+[<a name="p23" href="#p23">page 23</a>] (<a href="#Contents">Contents</a>)
-- A multibyte character set may have a state-dependent encoding, wherein each
sequence of multibyte characters begins in an initial shift state and enters other
tabulation position, the behavior of the display device is unspecified.
\v (vertical tab) Moves the active position to the initial position of the next vertical
tabulation position. If the active position is at or past the last defined vertical
-[<a name="#p24" href="p24">page 24</a>] (<a href="#Contents">Contents</a>)
+[<a name="p24" href="#p24">page 24</a>] (<a href="#Contents">Contents</a>)
tabulation position, the behavior of the display device is unspecified.
3 Each of these escape sequences shall produce a unique implementation-defined value
18) Implementations should avoid imposing fixed translation limits whenever possible.
-[<a name="#p25" href="p25">page 25</a>] (<a href="#Contents">Contents</a>)
+[<a name="p25" href="#p25">page 25</a>] (<a href="#Contents">Contents</a>)
universal character name specifying a short identifier of 00010000 or more is
considered 10 characters, and each extended source character is considered the same
19) See ''future language directions'' (<a href="#6.11.3">6.11.3</a>).
-[<a name="#p26" href="p26">page 26</a>] (<a href="#Contents">Contents</a>)
+[<a name="p26" href="#p26">page 26</a>] (<a href="#Contents">Contents</a>)
(absolute value) to those shown, with the same sign.
-- number of bits for smallest object that is not a bit-field (byte)
ULONG_MAX 4294967295 // 232 - 1
-[<a name="#p27" href="p27">page 27</a>] (<a href="#Contents">Contents</a>)
+[<a name="p27" href="#p27">page 27</a>] (<a href="#Contents">Contents</a>)
-- minimum value for an object of type long long int
LLONG_MIN -9223372036854775807 // -(263 - 1)
21) The floating-point model is intended to clarify the description of each floating-point characteristic and
does not require the floating-point arithmetic of the implementation to be identical.
-[<a name="#p28" href="p28">page 28</a>] (<a href="#Contents">Contents</a>)
+[<a name="p28" href="#p28">page 28</a>] (<a href="#Contents">Contents</a>)
arithmetic operand.22)
4 An implementation may give zero and values that are not floating-point numbers (such as
23) Evaluation of FLT_ROUNDS correctly reflects any execution-time change of rounding mode through
the function fesetround in <a href="#7.6"><fenv.h></a>.
-[<a name="#p29" href="p29">page 29</a>] (<a href="#Contents">Contents</a>)
+[<a name="p29" href="#p29">page 29</a>] (<a href="#Contents">Contents</a>)
9 Except for assignment and cast (which remove all extra range and precision), the values
yielded by operators with floating operands and values subject to the usual arithmetic
26) Characterization as absent is intended if no floating-point operations produce subnormal results from
non-subnormal inputs, even if the type format includes representations of subnormal numbers.
-[<a name="#p30" href="p30">page 30</a>] (<a href="#Contents">Contents</a>)
+[<a name="p30" href="#p30">page 30</a>] (<a href="#Contents">Contents</a>)
-- number of base-FLT_RADIX digits in the floating-point significand, p
FLT_MANT_DIG
-[<a name="#p31" href="p31">page 31</a>] (<a href="#Contents">Contents</a>)
+[<a name="p31" href="#p31">page 31</a>] (<a href="#Contents">Contents</a>)
-- minimum negative integer such that 10 raised to that power is in the range of
normalized floating-point numbers, [^log10 b emin -1 ^]
-[<a name="#p32" href="p32">page 32</a>] (<a href="#Contents">Contents</a>)
+[<a name="p32" href="#p32">page 32</a>] (<a href="#Contents">Contents</a>)
-- minimum positive floating-point number27)
FLT_TRUE_MIN 1E-37
28) The floating-point model in that standard sums powers of b from zero, so the values of the exponent
limits are one less than shown here.
-[<a name="#p33" href="p33">page 33</a>] (<a href="#Contents">Contents</a>)
+[<a name="p33" href="#p33">page 33</a>] (<a href="#Contents">Contents</a>)
FLT_DIG 6
FLT_MIN_EXP -125
-[<a name="#p34" href="p34">page 34</a>] (<a href="#Contents">Contents</a>)
+[<a name="p34" href="#p34">page 34</a>] (<a href="#Contents">Contents</a>)
<a name="6" href="#6"><b> 6. Language</b></a>
a function definition, the identifier has block scope, which terminates at the end of the
associated block. If the declarator or type specifier that declares the identifier appears
-[<a name="#p35" href="p35">page 35</a>] (<a href="#Contents">Contents</a>)
+[<a name="p35" href="#p35">page 35</a>] (<a href="#Contents">Contents</a>)
within the list of parameter declarations in a function prototype (not part of a function
definition), the identifier has function prototype scope, which terminates at the end of the
29) There is no linkage between different identifiers.
-[<a name="#p36" href="p36">page 36</a>] (<a href="#Contents">Contents</a>)
+[<a name="p36" href="#p36">page 36</a>] (<a href="#Contents">Contents</a>)
4 For an identifier declared with the storage-class specifier extern in a scope in which a
prior declaration of that identifier is visible,31) if the prior declaration specifies internal or
31) As specified in <a href="#6.2.1">6.2.1</a>, the later declaration might hide the prior declaration.
32) There is only one name space for tags even though three are possible.
-[<a name="#p37" href="p37">page 37</a>] (<a href="#Contents">Contents</a>)
+[<a name="p37" href="#p37">page 37</a>] (<a href="#Contents">Contents</a>)
<a name="6.2.4" href="#6.2.4"><b> 6.2.4 Storage durations of objects</b></a>
1 An object has a storage duration that determines its lifetime. There are four storage
program.
34) In the case of a volatile object, the last store need not be explicit in the program.
-[<a name="#p38" href="p38">page 38</a>] (<a href="#Contents">Contents</a>)
+[<a name="p38" href="#p38">page 38</a>] (<a href="#Contents">Contents</a>)
7 For such an object that does have a variable length array type, its lifetime extends from
the declaration of the object until execution of the program leaves the scope of the
37) A type may be incomplete or complete throughout an entire translation unit, or it may change states at
different points within a translation unit.
-[<a name="#p39" href="p39">page 39</a>] (<a href="#Contents">Contents</a>)
+[<a name="p39" href="#p39">page 39</a>] (<a href="#Contents">Contents</a>)
5 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
arguments to functions, return values from functions, and members of unions.
42) See ''future language directions'' (<a href="#6.11.1">6.11.1</a>).
-[<a name="#p40" href="p40">page 40</a>] (<a href="#Contents">Contents</a>)
+[<a name="p40" href="#p40">page 40</a>] (<a href="#Contents">Contents</a>)
11 There are three complex types, designated as float _Complex, double
_Complex, and long double _Complex.43) (Complex types are a conditional
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.
-[<a name="#p41" href="p41">page 41</a>] (<a href="#Contents">Contents</a>)
+[<a name="p41" href="#p41">page 41</a>] (<a href="#Contents">Contents</a>)
20 Any number of derived types can be constructed from the object and function types, as
follows:
46) Note that aggregate type does not include union type because an object with union type can only
contain one member at a time.
-[<a name="#p42" href="p42">page 42</a>] (<a href="#Contents">Contents</a>)
+[<a name="p42" href="#p42">page 42</a>] (<a href="#Contents">Contents</a>)
type. It is completed, for all declarations of that type, by declaring the same structure or
union tag with its defining content later in the same scope.
48) The same representation and alignment requirements are meant to imply interchangeability as
arguments to functions, return values from functions, and members of unions.
-[<a name="#p43" href="p43">page 43</a>] (<a href="#Contents">Contents</a>)
+[<a name="p43" href="#p43">page 43</a>] (<a href="#Contents">Contents</a>)
qualified float'' and is a pointer to a qualified type.
50) Thus, an automatic variable can be initialized to a trap representation without causing undefined
behavior, but the value of the variable cannot be used until a proper value is stored in it.
-[<a name="#p44" href="p44">page 44</a>] (<a href="#Contents">Contents</a>)
+[<a name="p44" href="#p44">page 44</a>] (<a href="#Contents">Contents</a>)
representation, even though the value of a member of the structure or union object may be
a trap representation.
with unsigned types. All other combinations of padding bits are alternative object representations of
the value specified by the value bits.
-[<a name="#p45" href="p45">page 45</a>] (<a href="#Contents">Contents</a>)
+[<a name="p45" href="#p45">page 45</a>] (<a href="#Contents">Contents</a>)
the resulting value. If the sign bit is one, the value shall be modified in one of the
following ways:
combinations of padding bits are alternative object representations of the value specified by the value
bits.
-[<a name="#p46" href="p46">page 46</a>] (<a href="#Contents">Contents</a>)
+[<a name="p46" href="#p46">page 46</a>] (<a href="#Contents">Contents</a>)
<a name="6.2.7" href="#6.2.7"><b> 6.2.7 Compatible type and composite type</b></a>
1 Two types have compatible type if their types are the same. Additional rules for
55) Two types need not be identical to be compatible.
-[<a name="#p47" href="p47">page 47</a>] (<a href="#Contents">Contents</a>)
+[<a name="p47" href="#p47">page 47</a>] (<a href="#Contents">Contents</a>)
-- If both types are function types with parameter type lists, the type of each parameter
in the composite parameter type list is the composite type of the corresponding
57) Every over-aligned type is, or contains, a structure or union type with a member to which an extended
alignment has been applied.
-[<a name="#p48" href="p48">page 48</a>] (<a href="#Contents">Contents</a>)
+[<a name="p48" href="#p48">page 48</a>] (<a href="#Contents">Contents</a>)
5 Alignments have an order from weaker to stronger or stricter alignments. Stricter
alignments have larger alignment values. An address that satisfies an alignment
-[<a name="#p49" href="p49">page 49</a>] (<a href="#Contents">Contents</a>)
+[<a name="p49" href="#p49">page 49</a>] (<a href="#Contents">Contents</a>)
<a name="6.3" href="#6.3"><b> 6.3 Conversions</b></a>
1 Several operators convert operand values from one type to another automatically. This
2 The following may be used in an expression wherever an int or unsigned int may
be used:
-[<a name="#p50" href="p50">page 50</a>] (<a href="#Contents">Contents</a>)
+[<a name="p50" href="#p50">page 50</a>] (<a href="#Contents">Contents</a>)
-- An object or expression with an integer type (other than int or unsigned int)
whose integer conversion rank is less than or equal to the rank of int and
need not be performed when a value of real floating type is converted to unsigned type. Thus, the
range of portable real floating values is (-1, Utype_MAX+1).
-[<a name="#p51" href="p51">page 51</a>] (<a href="#Contents">Contents</a>)
+[<a name="p51" href="#p51">page 51</a>] (<a href="#Contents">Contents</a>)
2 When a value of integer type is converted to a real floating type, if the value being
converted can be represented exactly in the new type, it is unchanged. If the value being
First, if the corresponding real type of either operand is long double, the other
operand is converted, without change of type domain, to a type whose
-[<a name="#p52" href="p52">page 52</a>] (<a href="#Contents">Contents</a>)
+[<a name="p52" href="#p52">page 52</a>] (<a href="#Contents">Contents</a>)
corresponding real type is long double.
Otherwise, if the corresponding real type of either operand is double, the other
float operand to double (and yields a double _Complex result).
63) The cast and assignment operators are still required to remove extra range and precision.
-[<a name="#p53" href="p53">page 53</a>] (<a href="#Contents">Contents</a>)
+[<a name="p53" href="#p53">page 53</a>] (<a href="#Contents">Contents</a>)
<a name="6.3.2" href="#6.3.2"><b> 6.3.2 Other operands</b></a>
<a name="6.3.2.1" href="#6.3.2.1"><b> 6.3.2.1 Lvalues, arrays, and function designators</b></a>
65) Because this conversion does not occur, the operand of the sizeof operator remains a function
designator and violates the constraint in <a href="#6.5.3.4">6.5.3.4</a>.
-[<a name="#p54" href="p54">page 54</a>] (<a href="#Contents">Contents</a>)
+[<a name="p54" href="#p54">page 54</a>] (<a href="#Contents">Contents</a>)
function returning type''.
Forward references: address and indirection operators (<a href="#6.5.3.2">6.5.3.2</a>), assignment operators
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.
-[<a name="#p55" href="p55">page 55</a>] (<a href="#Contents">Contents</a>)
+[<a name="p55" href="#p55">page 55</a>] (<a href="#Contents">Contents</a>)
7 A pointer to an object type may be converted to a pointer to a different object type. If the
resulting pointer is not correctly aligned68) for the referenced type, the behavior is
pointer to type B, which in turn is correctly aligned for a pointer to type C, then a pointer to type A is
correctly aligned for a pointer to type C.
-[<a name="#p56" href="p56">page 56</a>] (<a href="#Contents">Contents</a>)
+[<a name="p56" href="#p56">page 56</a>] (<a href="#Contents">Contents</a>)
<a name="6.4" href="#6.4"><b> 6.4 Lexical elements</b></a>
Syntax
69) An additional category, placemarkers, is used internally in translation phase 4 (see <a href="#6.10.3.3">6.10.3.3</a>); it cannot
occur in source files.
-[<a name="#p57" href="p57">page 57</a>] (<a href="#Contents">Contents</a>)
+[<a name="p57" href="#p57">page 57</a>] (<a href="#Contents">Contents</a>)
4 If the input stream has been parsed into preprocessing tokens up to a given character, the
next preprocessing token is the longest sequence of characters that could constitute a
Semantics
2 The above tokens (case sensitive) are reserved (in translation phases 7 and 8) for use as
keywords, and shall not be used otherwise. The keyword _Imaginary is reserved for
-[<a name="#p58" href="p58">page 58</a>] (<a href="#Contents">Contents</a>)
+[<a name="p58" href="#p58">page 58</a>] (<a href="#Contents">Contents</a>)
specifying imaginary types.70)
<a name="6.4.2" href="#6.4.2"><b> 6.4.2 Identifiers</b></a>
character or sequence of characters may be used to encode the \u in a universal character name.
Extended characters may produce a long external identifier.
-[<a name="#p59" href="p59">page 59</a>] (<a href="#Contents">Contents</a>)
+[<a name="p59" href="#p59">page 59</a>] (<a href="#Contents">Contents</a>)
4 When preprocessing tokens are converted to tokens during translation phase 7, if a
preprocessing token could be converted to either a keyword or an identifier, it is converted
72) Since the name __func__ is reserved for any use by the implementation (<a href="#7.1.3">7.1.3</a>), if any other
identifier is explicitly declared using the name __func__, the behavior is undefined.
-[<a name="#p60" href="p60">page 60</a>] (<a href="#Contents">Contents</a>)
+[<a name="p60" href="#p60">page 60</a>] (<a href="#Contents">Contents</a>)
<a name="6.4.3" href="#6.4.3"><b> 6.4.3 Universal character names</b></a>
Syntax
74) Short identifiers for characters were first specified in ISO/IEC 10646-1/AMD9:1997.
-[<a name="#p61" href="p61">page 61</a>] (<a href="#Contents">Contents</a>)
+[<a name="p61" href="#p61">page 61</a>] (<a href="#Contents">Contents</a>)
<a name="6.4.4" href="#6.4.4"><b> 6.4.4 Constants</b></a>
Syntax
-[<a name="#p62" href="p62">page 62</a>] (<a href="#Contents">Contents</a>)
+[<a name="p62" href="#p62">page 62</a>] (<a href="#Contents">Contents</a>)
hexadecimal-digit: one of
0 1 2 3 4 5 6 7 8 9
-[<a name="#p63" href="p63">page 63</a>] (<a href="#Contents">Contents</a>)
+[<a name="p63" href="#p63">page 63</a>] (<a href="#Contents">Contents</a>)
Octal or Hexadecimal
Suffix Decimal Constant Constant
-[<a name="#p64" href="p64">page 64</a>] (<a href="#Contents">Contents</a>)
+[<a name="p64" href="#p64">page 64</a>] (<a href="#Contents">Contents</a>)
<a name="6.4.4.2" href="#6.4.4.2"><b> 6.4.4.2 Floating constants</b></a>
Syntax
floating-suffix: one of
f l F L
-[<a name="#p65" href="p65">page 65</a>] (<a href="#Contents">Contents</a>)
+[<a name="p65" href="#p65">page 65</a>] (<a href="#Contents">Contents</a>)
Description
2 A floating constant has a significand part that may be followed by an exponent part and a
76) The specification for the library functions recommends more accurate conversion than required for
floating constants (see <a href="#7.22.1.3">7.22.1.3</a>).
-[<a name="#p66" href="p66">page 66</a>] (<a href="#Contents">Contents</a>)
+[<a name="p66" href="#p66">page 66</a>] (<a href="#Contents">Contents</a>)
<a name="6.4.4.3" href="#6.4.4.3"><b> 6.4.4.3 Enumeration constants</b></a>
Syntax
-[<a name="#p67" href="p67">page 67</a>] (<a href="#Contents">Contents</a>)
+[<a name="p67" href="#p67">page 67</a>] (<a href="#Contents">Contents</a>)
hexadecimal-escape-sequence:
\x hexadecimal-digit
-[<a name="#p68" href="p68">page 68</a>] (<a href="#Contents">Contents</a>)
+[<a name="p68" href="#p68">page 68</a>] (<a href="#Contents">Contents</a>)
Constraints
9 The value of an octal or hexadecimal escape sequence shall be in the range of
77) The semantics of these characters were discussed in <a href="#5.2.2">5.2.2</a>. If any other character follows a backslash,
the result is not a token and a diagnostic is required. See ''future language directions'' (<a href="#6.11.4">6.11.4</a>).
-[<a name="#p69" href="p69">page 69</a>] (<a href="#Contents">Contents</a>)
+[<a name="p69" href="#p69">page 69</a>] (<a href="#Contents">Contents</a>)
14 EXAMPLE 3 Even if eight bits are used for objects that have type char, the construction '\x123'
specifies an integer character constant containing only one character, since a hexadecimal escape sequence
were in an integer character constant (for a character or UTF-8 string literal) or a wide
character constant (for a wide string literal), except that the single-quote ' is
representable either by itself or by the escape sequence \', but the double-quote " shall
-[<a name="#p70" href="p70">page 70</a>] (<a href="#Contents">Contents</a>)
+[<a name="p70" href="#p70">page 70</a>] (<a href="#Contents">Contents</a>)
be represented by the escape sequence \".
Semantics
78) A string literal need not be a string (see <a href="#7.1.1">7.1.1</a>), because a null character may be embedded in it by a
\0 escape sequence.
-[<a name="#p71" href="p71">page 71</a>] (<a href="#Contents">Contents</a>)
+[<a name="p71" href="#p71">page 71</a>] (<a href="#Contents">Contents</a>)
"a" "b" L"c"
"a" L"b" "c"
-[<a name="#p72" href="p72">page 72</a>] (<a href="#Contents">Contents</a>)
+[<a name="p72" href="#p72">page 72</a>] (<a href="#Contents">Contents</a>)
3 In all aspects of the language, the six tokens79)
<: :> <% %> %: %:%:
80) Thus [ and <: behave differently when ''stringized'' (see <a href="#6.10.3.2">6.10.3.2</a>), but can otherwise be freely
interchanged.
-[<a name="#p73" href="p73">page 73</a>] (<a href="#Contents">Contents</a>)
+[<a name="p73" href="#p73">page 73</a>] (<a href="#Contents">Contents</a>)
sequence between the " delimiters, the behavior is undefined.81) Header name
preprocessing tokens are recognized only within #include preprocessing directives and
81) Thus, sequences of characters that resemble escape sequences cause undefined behavior.
82) For an example of a header name preprocessing token used in a #pragma directive, see <a href="#6.10.9">6.10.9</a>.
-[<a name="#p74" href="p74">page 74</a>] (<a href="#Contents">Contents</a>)
+[<a name="p74" href="#p74">page 74</a>] (<a href="#Contents">Contents</a>)
<a name="6.4.9" href="#6.4.9"><b> 6.4.9 Comments</b></a>
1 Except within a character constant, a string literal, or a comment, the characters /*
83) Thus, /* ... */ comments do not nest.
-[<a name="#p75" href="p75">page 75</a>] (<a href="#Contents">Contents</a>)
+[<a name="p75" href="#p75">page 75</a>] (<a href="#Contents">Contents</a>)
<a name="6.5" href="#6.5"><b> 6.5 Expressions</b></a>
1 An expression is a sequence of operators and operands that specifies computation of a
indeterminately sequenced evaluations of its subexpressions need not be performed consistently in
different evaluations.
-[<a name="#p76" href="p76">page 76</a>] (<a href="#Contents">Contents</a>)
+[<a name="p76" href="#p76">page 76</a>] (<a href="#Contents">Contents</a>)
6 The effective type of an object for an access to its stored value is the declared type of the
object, if any.87) If a value is stored into an object having no declared type through an
decrease accuracy for containing expressions, their use needs to be well-defined and clearly
documented.
-[<a name="#p77" href="p77">page 77</a>] (<a href="#Contents">Contents</a>)
+[<a name="p77" href="#p77">page 77</a>] (<a href="#Contents">Contents</a>)
<a name="6.5.1" href="#6.5.1"><b> 6.5.1 Primary expressions</b></a>
Syntax
91) Thus, an undeclared identifier is a violation of the syntax.
-[<a name="#p78" href="p78">page 78</a>] (<a href="#Contents">Contents</a>)
+[<a name="p78" href="#p78">page 78</a>] (<a href="#Contents">Contents</a>)
modified type. No two generic associations in the same generic selection shall specify
compatible types. The controlling expression of a generic selection shall have type
-[<a name="#p79" href="p79">page 79</a>] (<a href="#Contents">Contents</a>)
+[<a name="p79" href="#p79">page 79</a>] (<a href="#Contents">Contents</a>)
<a name="6.5.2.1" href="#6.5.2.1"><b> 6.5.2.1 Array subscripting</b></a>
Constraints
92) Most often, this is the result of converting an identifier that is a function designator.
-[<a name="#p80" href="p80">page 80</a>] (<a href="#Contents">Contents</a>)
+[<a name="p80" href="#p80">page 80</a>] (<a href="#Contents">Contents</a>)
have a type such that its value may be assigned to an object with the unqualified version
of the type of its corresponding parameter.
change the value of the object pointed to. A parameter declared to have array or function type is
adjusted to have a pointer type as described in <a href="#6.9.1">6.9.1</a>.
-[<a name="#p81" href="p81">page 81</a>] (<a href="#Contents">Contents</a>)
+[<a name="p81" href="#p81">page 81</a>] (<a href="#Contents">Contents</a>)
8 No other conversions are performed implicitly; in particular, the number and types of
arguments are not compared with those of the parameters in a function definition that
as an object representation in the new type as described in <a href="#6.2.6">6.2.6</a> (a process sometimes called ''type
punning''). This might be a trap representation.
-[<a name="#p82" href="p82">page 82</a>] (<a href="#Contents">Contents</a>)
+[<a name="p82" href="#p82">page 82</a>] (<a href="#Contents">Contents</a>)
4 A postfix expression followed by the -> operator and an identifier designates a member
of a structure or union object. The value is that of the named member of the object to
with access to a member from another thread, where at least one access is a modification. Members
can be safely accessed using a non-atomic object which is assigned to or from the atomic object.
-[<a name="#p83" href="p83">page 83</a>] (<a href="#Contents">Contents</a>)
+[<a name="p83" href="#p83">page 83</a>] (<a href="#Contents">Contents</a>)
9 EXAMPLE 3 The following is a valid fragment:
union {
-[<a name="#p84" href="p84">page 84</a>] (<a href="#Contents">Contents</a>)
+[<a name="p84" href="#p84">page 84</a>] (<a href="#Contents">Contents</a>)
<a name="6.5.2.4" href="#6.5.2.4"><b> 6.5.2.4 Postfix increment and decrement operators</b></a>
Constraints
} while (!atomic_compare_exchange_strong(&E, &result, tmp));
with result being the result of the operation.
-[<a name="#p85" href="p85">page 85</a>] (<a href="#Contents">Contents</a>)
+[<a name="p85" href="#p85">page 85</a>] (<a href="#Contents">Contents</a>)
4 If the type name specifies an array of unknown size, the size is determined by the
initializer list as specified in <a href="#6.7.9">6.7.9</a>, and the type of the compound literal is that of the
101) This allows implementations to share storage for string literals and constant compound literals with
the same or overlapping representations.
-[<a name="#p86" href="p86">page 86</a>] (<a href="#Contents">Contents</a>)
+[<a name="p86" href="#p86">page 86</a>] (<a href="#Contents">Contents</a>)
drawline(&(struct point){.x=1, .y=1},
&(struct point){.x=3, .y=4});
-[<a name="#p87" href="p87">page 87</a>] (<a href="#Contents">Contents</a>)
+[<a name="p87" href="#p87">page 87</a>] (<a href="#Contents">Contents</a>)
<a name="6.5.3" href="#6.5.3"><b> 6.5.3 Unary operators</b></a>
Syntax
neither that operator nor the & operator is evaluated and the result is as if both were
omitted, except that the constraints on the operators still apply and the result is not an
-[<a name="#p88" href="p88">page 88</a>] (<a href="#Contents">Contents</a>)
+[<a name="p88" href="#p88">page 88</a>] (<a href="#Contents">Contents</a>)
lvalue. Similarly, if the operand is the result of a [] operator, neither the & operator nor
the unary * that is implied by the [] is evaluated and the result is as if the & operator
address inappropriately aligned for the type of object pointed to, and the address of an object after the
end of its lifetime.
-[<a name="#p89" href="p89">page 89</a>] (<a href="#Contents">Contents</a>)
+[<a name="p89" href="#p89">page 89</a>] (<a href="#Contents">Contents</a>)
<a name="6.5.3.4" href="#6.5.3.4"><b> 6.5.3.4 The sizeof and alignof operators</b></a>
Constraints
103) When applied to a parameter declared to have array or function type, the sizeof operator yields the
size of the adjusted (pointer) type (see <a href="#6.9.1">6.9.1</a>).
-[<a name="#p90" href="p90">page 90</a>] (<a href="#Contents">Contents</a>)
+[<a name="p90" href="#p90">page 90</a>] (<a href="#Contents">Contents</a>)
size_t fsize3(int n)
{
104) A cast does not yield an lvalue. Thus, a cast to a qualified type has the same effect as a cast to the
unqualified version of the type.
-[<a name="#p91" href="p91">page 91</a>] (<a href="#Contents">Contents</a>)
+[<a name="p91" href="#p91">page 91</a>] (<a href="#Contents">Contents</a>)
<a name="6.5.5" href="#6.5.5"><b> 6.5.5 Multiplicative operators</b></a>
Syntax
105) This is often called ''truncation toward zero''.
-[<a name="#p92" href="p92">page 92</a>] (<a href="#Contents">Contents</a>)
+[<a name="p92" href="#p92">page 92</a>] (<a href="#Contents">Contents</a>)
-- both operands have arithmetic type;
-- both operands are pointers to qualified or unqualified versions of compatible complete
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
-[<a name="#p93" href="p93">page 93</a>] (<a href="#Contents">Contents</a>)
+[<a name="p93" href="#p93">page 93</a>] (<a href="#Contents">Contents</a>)
object of type ptrdiff_t. Moreover, if the expression P points either to an element of
an array object or one past the last element of an array object, and the expression Q points
another object in the program) just after the end of the object in order to satisfy the ''one past the last
element'' requirements.
-[<a name="#p94" href="p94">page 94</a>] (<a href="#Contents">Contents</a>)
+[<a name="p94" href="#p94">page 94</a>] (<a href="#Contents">Contents</a>)
greater than or equal to the width of the promoted left operand, the behavior is undefined.
4 The result of E1 << E2 is E1 left-shifted E2 bit positions; vacated bits are filled with
declared earlier in the structure, and pointers to array elements with larger subscript
values compare greater than pointers to elements of the same array with lower subscript
-[<a name="#p95" href="p95">page 95</a>] (<a href="#Contents">Contents</a>)
+[<a name="p95" href="#p95">page 95</a>] (<a href="#Contents">Contents</a>)
values. All pointers to members of the same union object compare equal. If the
expression P points to an element of an array object and the expression Q points to the
means (a<b)<c; in other words, ''if a is less than b, compare 1 to c; otherwise, compare 0 to c''.
108) Because of the precedences, a<b == c<d is 1 whenever a<b and c<d have the same truth-value.
-[<a name="#p96" href="p96">page 96</a>] (<a href="#Contents">Contents</a>)
+[<a name="p96" href="#p96">page 96</a>] (<a href="#Contents">Contents</a>)
5 Otherwise, at least one operand is a pointer. If one operand is a pointer and the other is a
null pointer constant, the null pointer constant is converted to the type of the pointer. If
outside array bounds) produced undefined behavior, subsequent comparisons also produce undefined
behavior.
-[<a name="#p97" href="p97">page 97</a>] (<a href="#Contents">Contents</a>)
+[<a name="p97" href="#p97">page 97</a>] (<a href="#Contents">Contents</a>)
<a name="6.5.11" href="#6.5.11"><b> 6.5.11 Bitwise exclusive OR operator</b></a>
Syntax
-[<a name="#p98" href="p98">page 98</a>] (<a href="#Contents">Contents</a>)
+[<a name="p98" href="#p98">page 98</a>] (<a href="#Contents">Contents</a>)
<a name="6.5.13" href="#6.5.13"><b> 6.5.13 Logical AND operator</b></a>
Syntax
-[<a name="#p99" href="p99">page 99</a>] (<a href="#Contents">Contents</a>)
+[<a name="p99" href="#p99">page 99</a>] (<a href="#Contents">Contents</a>)
<a name="6.5.15" href="#6.5.15"><b> 6.5.15 Conditional operator</b></a>
Syntax
110) A conditional expression does not yield an lvalue.
-[<a name="#p100" href="p100">page 100</a>] (<a href="#Contents">Contents</a>)
+[<a name="p100" href="#p100">page 100</a>] (<a href="#Contents">Contents</a>)
7 EXAMPLE The common type that results when the second and third operands are pointers is determined
in two independent stages. The appropriate qualifiers, for example, do not depend on whether the two
111) The implementation is permitted to read the object to determine the value but is not required to, even
when the object has volatile-qualified type.
-[<a name="#p101" href="p101">page 101</a>] (<a href="#Contents">Contents</a>)
+[<a name="p101" href="#p101">page 101</a>] (<a href="#Contents">Contents</a>)
<a name="6.5.16.1" href="#6.5.16.1"><b> 6.5.16.1 Simple assignment</b></a>
Constraints
qualifiers that were applied to the type category of the expression (for example, it removes const but
not volatile from the type int volatile * const).
-[<a name="#p102" href="p102">page 102</a>] (<a href="#Contents">Contents</a>)
+[<a name="p102" href="#p102">page 102</a>] (<a href="#Contents">Contents</a>)
int f(void);
char c;
3 A compound assignment of the form E1 op = E2 is equivalent to the simple assignment
expression E1 = E1 op (E2), except that the lvalue E1 is evaluated only once, and with
respect to an indeterminately-sequenced function call, the operation of a compound
-[<a name="#p103" href="p103">page 103</a>] (<a href="#Contents">Contents</a>)
+[<a name="p103" href="#p103">page 103</a>] (<a href="#Contents">Contents</a>)
assignment is a single evaluation. If E1 has an atomic type, compound assignment is a
read-modify-write operation with memory_order_seq_cst memory order
with result being the result of the operation.
114) A comma operator does not yield an lvalue.
-[<a name="#p104" href="p104">page 104</a>] (<a href="#Contents">Contents</a>)
+[<a name="p104" href="#p104">page 104</a>] (<a href="#Contents">Contents</a>)
<a name="6.6" href="#6.6"><b> 6.6 Constant expressions</b></a>
Syntax
array. Further constraints that apply to the integer constant expressions used in conditional-inclusion
preprocessing directives are discussed in <a href="#6.10.1">6.10.1</a>.
-[<a name="#p105" href="p105">page 105</a>] (<a href="#Contents">Contents</a>)
+[<a name="p105" href="#p105">page 105</a>] (<a href="#Contents">Contents</a>)
-- a null pointer constant,
-- an address constant, or
static int i = 2 || 1 / 0;
the expression is a valid integer constant expression with value one.
-[<a name="#p106" href="p106">page 106</a>] (<a href="#Contents">Contents</a>)
+[<a name="p106" href="#p106">page 106</a>] (<a href="#Contents">Contents</a>)
<a name="6.7" href="#6.7"><b> 6.7 Declarations</b></a>
Syntax
119) Function definitions have a different syntax, described in <a href="#6.9.1">6.9.1</a>.
-[<a name="#p107" href="p107">page 107</a>] (<a href="#Contents">Contents</a>)
+[<a name="p107" href="#p107">page 107</a>] (<a href="#Contents">Contents</a>)
-- for an enumeration constant or typedef name, is the (only) declaration of the
identifier.
120) See ''future language directions'' (<a href="#6.11.5">6.11.5</a>).
-[<a name="#p108" href="p108">page 108</a>] (<a href="#Contents">Contents</a>)
+[<a name="p108" href="#p108">page 108</a>] (<a href="#Contents">Contents</a>)
5 A declaration of an identifier for an object with storage-class specifier register
suggests that access to the object be as fast as possible. The extent to which such
<a href="#6.3.2.1">6.3.2.1</a>). Thus, the only operator that can be applied to an array declared with storage-class specifier
register is sizeof.
-[<a name="#p109" href="p109">page 109</a>] (<a href="#Contents">Contents</a>)
+[<a name="p109" href="#p109">page 109</a>] (<a href="#Contents">Contents</a>)
type specifiers shall be one of the following multisets (delimited by commas, when there
is more than one multiset per item); the type specifiers may occur in any order, possibly
-[<a name="#p110" href="p110">page 110</a>] (<a href="#Contents">Contents</a>)
+[<a name="p110" href="#p110">page 110</a>] (<a href="#Contents">Contents</a>)
Semantics
4 Specifiers for structures, unions, enumerations, and atomic types are discussed in <a href="#6.7.2.1">6.7.2.1</a>
shall contain a struct-declarator-list.
-[<a name="#p111" href="p111">page 111</a>] (<a href="#Contents">Contents</a>)
+[<a name="p111" href="#p111">page 111</a>] (<a href="#Contents">Contents</a>)
3 A structure or union shall not contain a member with incomplete or function type (hence,
a structure shall not contain an instance of itself, but may contain a pointer to an instance
124) The unary & (address-of) operator cannot be applied to a bit-field object; thus, there are no pointers to
or arrays of bit-field objects.
-[<a name="#p112" href="p112">page 112</a>] (<a href="#Contents">Contents</a>)
+[<a name="p112" href="#p112">page 112</a>] (<a href="#Contents">Contents</a>)
type _Bool, the value of the bit-field shall compare equal to the value stored; a _Bool
bit-field has the semantics of a _Bool.
126) An unnamed bit-field structure member is useful for padding to conform to externally imposed
layouts.
-[<a name="#p113" href="p113">page 113</a>] (<a href="#Contents">Contents</a>)
+[<a name="p113" href="#p113">page 113</a>] (<a href="#Contents">Contents</a>)
the flexible array member is ignored. In particular, the size of the structure is as if the
flexible array member were omitted except that it may have more trailing padding than
in which case the assignment would be legitimate. Nevertheless, it cannot appear in strictly conforming
code.
-[<a name="#p114" href="p114">page 114</a>] (<a href="#Contents">Contents</a>)
+[<a name="p114" href="#p114">page 114</a>] (<a href="#Contents">Contents</a>)
22 After the further declaration:
struct ss { int n; };
-[<a name="#p115" href="p115">page 115</a>] (<a href="#Contents">Contents</a>)
+[<a name="p115" href="#p115">page 115</a>] (<a href="#Contents">Contents</a>)
<a name="6.7.2.2" href="#6.7.2.2"><b> 6.7.2.2 Enumeration specifiers</b></a>
Syntax
128) An implementation may delay the choice of which integer type until all enumeration constants have
been seen.
-[<a name="#p116" href="p116">page 116</a>] (<a href="#Contents">Contents</a>)
+[<a name="p116" href="#p116">page 116</a>] (<a href="#Contents">Contents</a>)
5 EXAMPLE The following fragment:
enum hue { chartreuse, burgundy, claret=20, winedark };
when a pointer to or a function returning a structure or union is being declared. (See incomplete types
in <a href="#6.2.5">6.2.5</a>.) The specification has to be complete before such a function is called or defined.
-[<a name="#p117" href="p117">page 117</a>] (<a href="#Contents">Contents</a>)
+[<a name="p117" href="#p117">page 117</a>] (<a href="#Contents">Contents</a>)
struct-or-union identifieropt { struct-declaration-list }
or
enumerated type.
131) A similar construction with enum does not exist.
-[<a name="#p118" href="p118">page 118</a>] (<a href="#Contents">Contents</a>)
+[<a name="p118" href="#p118">page 118</a>] (<a href="#Contents">Contents</a>)
struct tnode s, *sp;
declares s to be an object of the given type and sp to be a pointer to an object of the given type. With
-[<a name="#p119" href="p119">page 119</a>] (<a href="#Contents">Contents</a>)
+[<a name="p119" href="#p119">page 119</a>] (<a href="#Contents">Contents</a>)
<a name="6.7.3" href="#6.7.3"><b> 6.7.3 Type qualifiers</b></a>
Syntax
never actually defined as objects in the program (such as an object at a memory-mapped input/output
address).
-[<a name="#p120" href="p120">page 120</a>] (<a href="#Contents">Contents</a>)
+[<a name="p120" href="#p120">page 120</a>] (<a href="#Contents">Contents</a>)
unknown factors mentioned previously.134) What constitutes an access to an object that
has volatile-qualified type is implementation-defined.
association between the allocated object and the pointer.
136) Both of these can occur through the use of typedefs.
-[<a name="#p121" href="p121">page 121</a>] (<a href="#Contents">Contents</a>)
+[<a name="p121" href="#p121">page 121</a>] (<a href="#Contents">Contents</a>)
13 EXAMPLE 3 The declaration
_Atomic volatile int *p;
expressions p and p+1 are based on the restricted pointer object designated by p, but the pointer
expressions *p and p[1] are not.
-[<a name="#p122" href="p122">page 122</a>] (<a href="#Contents">Contents</a>)
+[<a name="p122" href="#p122">page 122</a>] (<a href="#Contents">Contents</a>)
8 EXAMPLE 2 The function parameter declarations in the following example
void f(int n, int * restrict p, int * restrict q)
-[<a name="#p123" href="p123">page 123</a>] (<a href="#Contents">Contents</a>)
+[<a name="p123" href="#p123">page 123</a>] (<a href="#Contents">Contents</a>)
12 The one exception allows the value of a restricted pointer to be carried out of the block in which it (or, more
precisely, the ordinary identifier used to designate it) is declared when that block finishes execution. For
139) For example, an implementation might never perform inline substitution, or might only perform inline
substitutions to calls in the scope of an inline declaration.
-[<a name="#p124" href="p124">page 124</a>] (<a href="#Contents">Contents</a>)
+[<a name="p124" href="#p124">page 124</a>] (<a href="#Contents">Contents</a>)
7 Any function with internal linkage can be an inline function. For a function with external
linkage, the following restrictions apply: If a function is declared with an inline
corresponding inline definitions in other translation units, all corresponding objects with static storage
duration are also distinct in each of the definitions.
-[<a name="#p125" href="p125">page 125</a>] (<a href="#Contents">Contents</a>)
+[<a name="p125" href="#p125">page 125</a>] (<a href="#Contents">Contents</a>)
_Noreturn void f () {
abort(); // ok
141) An alignment specification of zero also does not affect other alignment specifications in the same
declaration.
-[<a name="#p126" href="p126">page 126</a>] (<a href="#Contents">Contents</a>)
+[<a name="p126" href="#p126">page 126</a>] (<a href="#Contents">Contents</a>)
<a name="6.7.6" href="#6.7.6"><b> 6.7.6 Declarators</b></a>
Syntax
scope, storage duration, and type indicated by the declaration specifiers.
3 A full declarator is a declarator that is not part of another declarator. The end of a full
declarator is a sequence point. If, in the nested sequence of declarators in a full
-[<a name="#p127" href="p127">page 127</a>] (<a href="#Contents">Contents</a>)
+[<a name="p127" href="#p127">page 127</a>] (<a href="#Contents">Contents</a>)
declarator, there is a declarator specifying a variable length array type, the type specified
by the full declarator is said to be variably modified. Furthermore, any type derived by
-[<a name="#p128" href="p128">page 128</a>] (<a href="#Contents">Contents</a>)
+[<a name="p128" href="#p128">page 128</a>] (<a href="#Contents">Contents</a>)
const int *ptr_to_constant;
int *const constant_ptr;
142) When several ''array of'' specifications are adjacent, a multidimensional array is declared.
-[<a name="#p129" href="p129">page 129</a>] (<a href="#Contents">Contents</a>)
+[<a name="p129" href="#p129">page 129</a>] (<a href="#Contents">Contents</a>)
such arrays are nonetheless complete types. If the size is an integer constant expression
and the element type has a known constant size, the array type is not a variable length
143) Thus, * can be used only in function declarations that are not definitions (see <a href="#6.7.6.3">6.7.6.3</a>).
-[<a name="#p130" href="p130">page 130</a>] (<a href="#Contents">Contents</a>)
+[<a name="p130" href="#p130">page 130</a>] (<a href="#Contents">Contents</a>)
10 EXAMPLE 4 All declarations of variably modified (VM) types have to be at either block scope or
function prototype scope. Array objects declared with the _Thread_local, static, or extern
-[<a name="#p131" href="p131">page 131</a>] (<a href="#Contents">Contents</a>)
+[<a name="p131" href="#p131">page 131</a>] (<a href="#Contents">Contents</a>)
D( parameter-type-list )
or
144) The macros defined in the <a href="#7.16"><stdarg.h></a> header (<a href="#7.16">7.16</a>) may be used to access arguments that
correspond to the ellipsis.
-[<a name="#p132" href="p132">page 132</a>] (<a href="#Contents">Contents</a>)
+[<a name="p132" href="#p132">page 132</a>] (<a href="#Contents">Contents</a>)
15 For two function types to be compatible, both shall specify compatible return types.146)
Moreover, the parameter type lists, if both are present, shall agree in the number of
145) See ''future language directions'' (<a href="#6.11.6">6.11.6</a>).
146) If both function types are ''old style'', parameter types are not compared.
-[<a name="#p133" href="p133">page 133</a>] (<a href="#Contents">Contents</a>)
+[<a name="p133" href="#p133">page 133</a>] (<a href="#Contents">Contents</a>)
additional arguments of any type.
-[<a name="#p134" href="p134">page 134</a>] (<a href="#Contents">Contents</a>)
+[<a name="p134" href="#p134">page 134</a>] (<a href="#Contents">Contents</a>)
<a name="6.7.7" href="#6.7.7"><b> 6.7.7 Type names</b></a>
Syntax
147) As indicated by the syntax, empty parentheses in a type name are interpreted as ''function with no
parameter specification'', rather than redundant parentheses around the omitted identifier.
-[<a name="#p135" href="p135">page 135</a>] (<a href="#Contents">Contents</a>)
+[<a name="p135" href="#p135">page 135</a>] (<a href="#Contents">Contents</a>)
<a name="6.7.8" href="#6.7.8"><b> 6.7.8 Type definitions</b></a>
Syntax
-[<a name="#p136" href="p136">page 136</a>] (<a href="#Contents">Contents</a>)
+[<a name="p136" href="#p136">page 136</a>] (<a href="#Contents">Contents</a>)
6 EXAMPLE 3 The following obscure constructions
typedef signed int t;
-[<a name="#p137" href="p137">page 137</a>] (<a href="#Contents">Contents</a>)
+[<a name="p137" href="#p137">page 137</a>] (<a href="#Contents">Contents</a>)
<a name="6.7.9" href="#6.7.9"><b> 6.7.9 Initialization</b></a>
Syntax
. identifier
then the current object (defined below) shall have structure or union type and the
identifier shall be the name of a member of that type.
-[<a name="#p138" href="p138">page 138</a>] (<a href="#Contents">Contents</a>)
+[<a name="p138" href="#p138">page 138</a>] (<a href="#Contents">Contents</a>)
Semantics
8 An initializer specifies the initial value stored in an object.
enclosed list of initializers for the elements or named members.
-[<a name="#p139" href="p139">page 139</a>] (<a href="#Contents">Contents</a>)
+[<a name="p139" href="#p139">page 139</a>] (<a href="#Contents">Contents</a>)
17 Each brace-enclosed initializer list has an associated current object. When no
designations are present, subobjects of the current object are initialized in order according
151) Any initializer for the subobject which is overridden and so not used to initialize that subobject might
not be evaluated at all.
-[<a name="#p140" href="p140">page 140</a>] (<a href="#Contents">Contents</a>)
+[<a name="p140" href="#p140">page 140</a>] (<a href="#Contents">Contents</a>)
22 If an array of unknown size is initialized, its size is determined by the largest indexed
element with an explicit initializer. The array type is completed at the end of its
152) In particular, the evaluation order need not be the same as the order of subobject initialization.
-[<a name="#p141" href="p141">page 141</a>] (<a href="#Contents">Contents</a>)
+[<a name="p141" href="#p141">page 141</a>] (<a href="#Contents">Contents</a>)
structures: w[0].a[0] is 1 and w[1].a[0] is 2; all the other elements are zero.
int a[] = { 1, 2 }, b[] = { 3, 4, 5 };
due to the rules for incomplete types.
-[<a name="#p142" href="p142">page 142</a>] (<a href="#Contents">Contents</a>)
+[<a name="p142" href="#p142">page 142</a>] (<a href="#Contents">Contents</a>)
32 EXAMPLE 8 The declaration
char s[] = "abc", t[3] = "abc";
-[<a name="#p143" href="p143">page 143</a>] (<a href="#Contents">Contents</a>)
+[<a name="p143" href="#p143">page 143</a>] (<a href="#Contents">Contents</a>)
<a name="6.7.10" href="#6.7.10"><b> 6.7.10 Static assertions</b></a>
Syntax
-[<a name="#p144" href="p144">page 144</a>] (<a href="#Contents">Contents</a>)
+[<a name="p144" href="#p144">page 144</a>] (<a href="#Contents">Contents</a>)
<a name="6.8" href="#6.8"><b> 6.8 Statements and blocks</b></a>
Syntax
2 A case or default label shall appear only in a switch statement. Further
constraints on such labels are discussed under the switch statement.
-[<a name="#p145" href="p145">page 145</a>] (<a href="#Contents">Contents</a>)
+[<a name="p145" href="#p145">page 145</a>] (<a href="#Contents">Contents</a>)
3 Label names shall be unique within a function.
Semantics
153) Such as assignments, and function calls which have side effects.
-[<a name="#p146" href="p146">page 146</a>] (<a href="#Contents">Contents</a>)
+[<a name="p146" href="#p146">page 146</a>] (<a href="#Contents">Contents</a>)
5 EXAMPLE 2 In the program fragment
char *s;
In the else form, the second substatement is executed if the expression compares equal
-[<a name="#p147" href="p147">page 147</a>] (<a href="#Contents">Contents</a>)
+[<a name="p147" href="#p147">page 147</a>] (<a href="#Contents">Contents</a>)
to 0. If the first substatement is reached via a label, the second substatement is not
executed.
154) That is, the declaration either precedes the switch statement, or it follows the last case or
default label associated with the switch that is in the block containing the declaration.
-[<a name="#p148" href="p148">page 148</a>] (<a href="#Contents">Contents</a>)
+[<a name="p148" href="#p148">page 148</a>] (<a href="#Contents">Contents</a>)
7 EXAMPLE In the artificial program fragment
switch (expr)
statement is not evaluated before entering the loop body, nor is clause-1 of a for statement.
156) An omitted controlling expression is replaced by a nonzero constant, which is a constant expression.
-[<a name="#p149" href="p149">page 149</a>] (<a href="#Contents">Contents</a>)
+[<a name="p149" href="#p149">page 149</a>] (<a href="#Contents">Contents</a>)
a for statement) its expression-3, may be assumed by the implementation to
terminate.157)
such that execution of the loop continues until the expression compares equal to 0; and expression-3
specifies an operation (such as incrementing) that is performed after each iteration.
-[<a name="#p150" href="p150">page 150</a>] (<a href="#Contents">Contents</a>)
+[<a name="p150" href="#p150">page 150</a>] (<a href="#Contents">Contents</a>)
Semantics
2 A jump statement causes an unconditional jump to another place.
-[<a name="#p151" href="p151">page 151</a>] (<a href="#Contents">Contents</a>)
+[<a name="p151" href="#p151">page 151</a>] (<a href="#Contents">Contents</a>)
4 EXAMPLE 2 A goto statement is not allowed to jump past any declarations of objects with variably
modified types. A jump within the scope, however, is permitted.
159) Following the contin: label is a null statement.
-[<a name="#p152" href="p152">page 152</a>] (<a href="#Contents">Contents</a>)
+[<a name="p152" href="#p152">page 152</a>] (<a href="#Contents">Contents</a>)
<a name="6.8.6.4" href="#6.8.6.4"><b> 6.8.6.4 The return statement</b></a>
Constraints
apply to the case of function return. The representation of floating-point values may have wider range
or precision than implied by the type; a cast may be used to remove this extra range and precision.
-[<a name="#p153" href="p153">page 153</a>] (<a href="#Contents">Contents</a>)
+[<a name="p153" href="#p153">page 153</a>] (<a href="#Contents">Contents</a>)
<a name="6.9" href="#6.9"><b> 6.9 External definitions</b></a>
Syntax
161) Thus, if an identifier declared with external linkage is not used in an expression, there need be no
external definition for it.
-[<a name="#p154" href="p154">page 154</a>] (<a href="#Contents">Contents</a>)
+[<a name="p154" href="#p154">page 154</a>] (<a href="#Contents">Contents</a>)
<a name="6.9.1" href="#6.9.1"><b> 6.9.1 Function definitions</b></a>
Syntax
F *Fp; // Fp points to a function that has type F
-[<a name="#p155" href="p155">page 155</a>] (<a href="#Contents">Contents</a>)
+[<a name="p155" href="#p155">page 155</a>] (<a href="#Contents">Contents</a>)
Semantics
7 The declarator in a function definition specifies the name of the function being defined
163) See ''future language directions'' (<a href="#6.11.7">6.11.7</a>).
164) A parameter identifier cannot be redeclared in the function body except in an enclosed block.
-[<a name="#p156" href="p156">page 156</a>] (<a href="#Contents">Contents</a>)
+[<a name="p156" href="#p156">page 156</a>] (<a href="#Contents">Contents</a>)
extern int max(a, b)
int a, b;
-[<a name="#p157" href="p157">page 157</a>] (<a href="#Contents">Contents</a>)
+[<a name="p157" href="#p157">page 157</a>] (<a href="#Contents">Contents</a>)
4 EXAMPLE 1
int i1 = 1; // definition, external linkage
-[<a name="#p158" href="p158">page 158</a>] (<a href="#Contents">Contents</a>)
+[<a name="p158" href="#p158">page 158</a>] (<a href="#Contents">Contents</a>)
<a name="6.10" href="#6.10"><b> 6.10 Preprocessing directives</b></a>
Syntax
-[<a name="#p159" href="p159">page 159</a>] (<a href="#Contents">Contents</a>)
+[<a name="p159" href="#p159">page 159</a>] (<a href="#Contents">Contents</a>)
control-line:
# include pp-tokens new-line
significance, as all white space is equivalent except in certain situations during preprocessing (see the
# character string literal creation operator in <a href="#6.10.3.2">6.10.3.2</a>, for example).
-[<a name="#p160" href="p160">page 160</a>] (<a href="#Contents">Contents</a>)
+[<a name="p160" href="#p160">page 160</a>] (<a href="#Contents">Contents</a>)
invocation of a function-like macro.
3 A text line shall not begin with a # preprocessing token. A non-directive shall not begin
166) Because the controlling constant expression is evaluated during translation phase 4, all identifiers
either are or are not macro names -- there simply are no keywords, enumeration constants, etc.
-[<a name="#p161" href="p161">page 161</a>] (<a href="#Contents">Contents</a>)
+[<a name="p161" href="#p161">page 161</a>] (<a href="#Contents">Contents</a>)
predefined or if it has been the subject of a #define preprocessing directive without an
intervening #undef directive with the same subject identifier), 0 if it is not.
if ('z' - 'a' == 25)
-[<a name="#p162" href="p162">page 162</a>] (<a href="#Contents">Contents</a>)
+[<a name="p162" href="#p162">page 162</a>] (<a href="#Contents">Contents</a>)
5 Preprocessing directives of the forms
# ifdef identifier new-line groupopt
before the terminating new-line character. However, comments may appear anywhere in a source file,
including within a preprocessing directive.
-[<a name="#p163" href="p163">page 163</a>] (<a href="#Contents">Contents</a>)
+[<a name="p163" href="#p163">page 163</a>] (<a href="#Contents">Contents</a>)
for in an implementation-defined manner. If this search is not supported, or if the search
fails, the directive is reprocessed as if it read
170) Note that adjacent string literals are not concatenated into a single string literal (see the translation
phases in <a href="#5.1.1.2">5.1.1.2</a>); thus, an expansion that results in two string literals is an invalid directive.
-[<a name="#p164" href="p164">page 164</a>] (<a href="#Contents">Contents</a>)
+[<a name="p164" href="#p164">page 164</a>] (<a href="#Contents">Contents</a>)
8 EXAMPLE 2 This illustrates macro-replaced #include directives:
#if VERSION == 1
name space for macro names. Any white-space characters preceding or following the
replacement list of preprocessing tokens are not considered part of the replacement list
-[<a name="#p165" href="p165">page 165</a>] (<a href="#Contents">Contents</a>)
+[<a name="p165" href="#p165">page 165</a>] (<a href="#Contents">Contents</a>)
for either form of macro.
8 If a # preprocessing token, followed by an identifier, occurs lexically at the point at which
are never scanned for macro names or parameters.
172) Despite the name, a non-directive is a preprocessing directive.
-[<a name="#p166" href="p166">page 166</a>] (<a href="#Contents">Contents</a>)
+[<a name="p166" href="#p166">page 166</a>] (<a href="#Contents">Contents</a>)
the variable arguments. The number of arguments so combined is such that, following
merger, the number of arguments is one more than the number of parameters in the macro
-[<a name="#p167" href="p167">page 167</a>] (<a href="#Contents">Contents</a>)
+[<a name="p167" href="#p167">page 167</a>] (<a href="#Contents">Contents</a>)
<a name="6.10.3.3" href="#6.10.3.3"><b> 6.10.3.3 The ## operator</b></a>
Constraints
173) Placemarker preprocessing tokens do not appear in the syntax because they are temporary entities that
exist only within translation phase 4.
-[<a name="#p168" href="p168">page 168</a>] (<a href="#Contents">Contents</a>)
+[<a name="p168" href="#p168">page 168</a>] (<a href="#Contents">Contents</a>)
<a name="6.10.3.4" href="#6.10.3.4"><b> 6.10.3.4 Rescanning and further replacement</b></a>
1 After all parameters in the replacement list have been substituted and # and ##
-[<a name="#p169" href="p169">page 169</a>] (<a href="#Contents">Contents</a>)
+[<a name="p169" href="#p169">page 169</a>] (<a href="#Contents">Contents</a>)
5 EXAMPLE 3 To illustrate the rules for redefinition and reexamination, the sequence
#define x 3
-[<a name="#p170" href="p170">page 170</a>] (<a href="#Contents">Contents</a>)
+[<a name="p170" href="#p170">page 170</a>] (<a href="#Contents">Contents</a>)
printf("x" "1" "= %d, x" "2" "= %s", x1, x2);
fputs(
report(x>y, "x is %d but y is %d", x, y);
-[<a name="#p171" href="p171">page 171</a>] (<a href="#Contents">Contents</a>)
+[<a name="p171" href="#p171">page 171</a>] (<a href="#Contents">Contents</a>)
results in
fprintf(stderr, "Flag" );
-[<a name="#p172" href="p172">page 172</a>] (<a href="#Contents">Contents</a>)
+[<a name="p172" href="#p172">page 172</a>] (<a href="#Contents">Contents</a>)
<a name="6.10.5" href="#6.10.5"><b> 6.10.5 Error directive</b></a>
Semantics
but is not required to.
175) See ''future language directions'' (<a href="#6.11.8">6.11.8</a>).
-[<a name="#p173" href="p173">page 173</a>] (<a href="#Contents">Contents</a>)
+[<a name="p173" href="#p173">page 173</a>] (<a href="#Contents">Contents</a>)
<a name="6.10.7" href="#6.10.7"><b> 6.10.7 Null directive</b></a>
Semantics
176) See ''future language directions'' (<a href="#6.11.9">6.11.9</a>).
177) The presumed source file name and line number can be changed by the #line directive.
-[<a name="#p174" href="p174">page 174</a>] (<a href="#Contents">Contents</a>)
+[<a name="p174" href="#p174">page 174</a>] (<a href="#Contents">Contents</a>)
__STDC_VERSION__ The integer constant 201ymmL.178)
__TIME__ The time of translation of the preprocessing translation unit: a character
remain an integer constant of type long int that is increased with each revision of this International
Standard.
-[<a name="#p175" href="p175">page 175</a>] (<a href="#Contents">Contents</a>)
+[<a name="p175" href="#p175">page 175</a>] (<a href="#Contents">Contents</a>)
<a name="6.10.8.3" href="#6.10.8.3"><b> 6.10.8.3 Conditional feature macros</b></a>
1 The following macro names are conditionally defined by the implementation:
179) The intention is that this will remain an integer constant of type long int that is increased with
each revision of this International Standard.
-[<a name="#p176" href="p176">page 176</a>] (<a href="#Contents">Contents</a>)
+[<a name="p176" href="#p176">page 176</a>] (<a href="#Contents">Contents</a>)
directive. The original four preprocessing tokens in the unary operator expression are
removed.
-[<a name="#p177" href="p177">page 177</a>] (<a href="#Contents">Contents</a>)
+[<a name="p177" href="#p177">page 177</a>] (<a href="#Contents">Contents</a>)
<a name="6.11" href="#6.11"><b> 6.11 Future language directions</b></a>
<a name="6.11.1" href="#6.11.1"><b> 6.11.1 Floating types</b></a>
-[<a name="#p178" href="p178">page 178</a>] (<a href="#Contents">Contents</a>)
+[<a name="p178" href="#p178">page 178</a>] (<a href="#Contents">Contents</a>)
<a name="7" href="#7"><b> 7. Library</b></a>
sequence of maximum length. Whether these counts provide for more than one shift sequence is the
implementation's choice.
-[<a name="#p179" href="p179">page 179</a>] (<a href="#Contents">Contents</a>)
+[<a name="p179" href="#p179">page 179</a>] (<a href="#Contents">Contents</a>)
<a name="7.1.2" href="#7.1.2"><b> 7.1.2 Standard headers</b></a>
1 Each library function is declared, with a type that includes a prototype, in a header,182)
183) The headers <a href="#7.3"><complex.h></a>, <a href="#7.17"><stdatomic.h></a>, and <a href="#7.25"><threads.h></a> are conditional features that
implementations need not support; see <a href="#6.10.8.3">6.10.8.3</a>.
-[<a name="#p180" href="p180">page 180</a>] (<a href="#Contents">Contents</a>)
+[<a name="p180" href="#p180">page 180</a>] (<a href="#Contents">Contents</a>)
7 A summary of the contents of the standard headers is given in <a href="#B">annex B</a>.
Forward references: diagnostics (<a href="#7.2">7.2</a>).
184) The list of reserved identifiers with external linkage includes math_errhandling, setjmp,
va_copy, and va_end.
-[<a name="#p181" href="p181">page 181</a>] (<a href="#Contents">Contents</a>)
+[<a name="p181" href="#p181">page 181</a>] (<a href="#Contents">Contents</a>)
<a name="7.1.4" href="#7.1.4"><b> 7.1.4 Use of library functions</b></a>
1 Each of the following statements applies unless explicitly stated otherwise in the detailed
implementation. The prototype for the function, which precedes and is hidden by any macro
definition, is thereby revealed also.
-[<a name="#p182" href="p182">page 182</a>] (<a href="#Contents">Contents</a>)
+[<a name="p182" href="#p182">page 182</a>] (<a href="#Contents">Contents</a>)
integer constant expressions shall additionally be suitable for use in #if preprocessing
directives.
explicitly share objects between threads.
190) This allows implementations to parallelize operations if there are no visible side effects.
-[<a name="#p183" href="p183">page 183</a>] (<a href="#Contents">Contents</a>)
+[<a name="p183" href="#p183">page 183</a>] (<a href="#Contents">Contents</a>)
#include <a href="#7.22"><stdlib.h></a>
#undef atoi
-[<a name="#p184" href="p184">page 184</a>] (<a href="#Contents">Contents</a>)
+[<a name="p184" href="#p184">page 184</a>] (<a href="#Contents">Contents</a>)
<a name="7.2" href="#7.2"><b> 7.2 Diagnostics <assert.h></b></a>
1 The header <a href="#7.2"><assert.h></a> defines the assert and static_assert macros and
Assertion failed: expression, function abc, file xyz, line nnn.
-[<a name="#p185" href="p185">page 185</a>] (<a href="#Contents">Contents</a>)
+[<a name="p185" href="#p185">page 185</a>] (<a href="#Contents">Contents</a>)
Returns
3 The assert macro returns no value.
-[<a name="#p186" href="p186">page 186</a>] (<a href="#Contents">Contents</a>)
+[<a name="p186" href="#p186">page 186</a>] (<a href="#Contents">Contents</a>)
<a name="7.3" href="#7.3"><b> 7.3 Complex arithmetic <complex.h></b></a>
<a name="7.3.1" href="#7.3.1"><b> 7.3.1 Introduction</b></a>
193) The imaginary unit is a number i such that i 2 = -1.
194) A specification for imaginary types is in informative <a href="#G">annex G</a>.
-[<a name="#p187" href="p187">page 187</a>] (<a href="#Contents">Contents</a>)
+[<a name="p187" href="#p187">page 187</a>] (<a href="#Contents">Contents</a>)
Forward references: IEC 60559-compatible complex arithmetic (<a href="#G">annex G</a>).
<a name="7.3.2" href="#7.3.2"><b> 7.3.2 Conventions</b></a>
compound statement), or until the end of the compound statement; at the end of a
compound statement the state for the pragma is restored to its condition just before the
-[<a name="#p188" href="p188">page 188</a>] (<a href="#Contents">Contents</a>)
+[<a name="p188" href="#p188">page 188</a>] (<a href="#Contents">Contents</a>)
compound statement. If this pragma is used in any other context, the behavior is
undefined. The default state for the pragma is ''off''.
-----
where the programmer can determine they are safe.
-[<a name="#p189" href="p189">page 189</a>] (<a href="#Contents">Contents</a>)
+[<a name="p189" href="#p189">page 189</a>] (<a href="#Contents">Contents</a>)
along the real axis.
<a name="7.3.5.3" href="#7.3.5.3"><b> 7.3.5.3 The catan functions</b></a>
-[<a name="#p190" href="p190">page 190</a>] (<a href="#Contents">Contents</a>)
+[<a name="p190" href="#p190">page 190</a>] (<a href="#Contents">Contents</a>)
Returns
3 The csin functions return the complex sine value.
-[<a name="#p191" href="p191">page 191</a>] (<a href="#Contents">Contents</a>)
+[<a name="p191" href="#p191">page 191</a>] (<a href="#Contents">Contents</a>)
Description
2 The casinh functions compute the complex arc hyperbolic sine of z, with branch cuts
-[<a name="#p192" href="p192">page 192</a>] (<a href="#Contents">Contents</a>)
+[<a name="p192" href="#p192">page 192</a>] (<a href="#Contents">Contents</a>)
<a name="7.3.6.5" href="#7.3.6.5"><b> 7.3.6.5 The csinh functions</b></a>
Synopsis
-[<a name="#p193" href="p193">page 193</a>] (<a href="#Contents">Contents</a>)
+[<a name="p193" href="#p193">page 193</a>] (<a href="#Contents">Contents</a>)
<a name="7.3.7.2" href="#7.3.7.2"><b> 7.3.7.2 The clog functions</b></a>
Synopsis
-[<a name="#p194" href="p194">page 194</a>] (<a href="#Contents">Contents</a>)
+[<a name="p194" href="#p194">page 194</a>] (<a href="#Contents">Contents</a>)
Description
2 The cpow functions compute the complex power function xy , with a branch cut for the
-[<a name="#p195" href="p195">page 195</a>] (<a href="#Contents">Contents</a>)
+[<a name="p195" href="#p195">page 195</a>] (<a href="#Contents">Contents</a>)
<a name="7.3.9.2" href="#7.3.9.2"><b> 7.3.9.2 The cimag functions</b></a>
Synopsis
196) For a variable z of complex type, z == creal(z) + cimag(z)*I.
-[<a name="#p196" href="p196">page 196</a>] (<a href="#Contents">Contents</a>)
+[<a name="p196" href="#p196">page 196</a>] (<a href="#Contents">Contents</a>)
<a name="7.3.9.4" href="#7.3.9.4"><b> 7.3.9.4 The conj functions</b></a>
Synopsis
2 The creal functions compute the real part of z.197)
-[<a name="#p197" href="p197">page 197</a>] (<a href="#Contents">Contents</a>)
+[<a name="p197" href="#p197">page 197</a>] (<a href="#Contents">Contents</a>)
Returns
3 The creal functions return the real part value.
197) For a variable z of complex type, z == creal(z) + cimag(z)*I.
-[<a name="#p198" href="p198">page 198</a>] (<a href="#Contents">Contents</a>)
+[<a name="p198" href="#p198">page 198</a>] (<a href="#Contents">Contents</a>)
<a name="7.4" href="#7.4"><b> 7.4 Character handling <ctype.h></b></a>
1 The header <a href="#7.4"><ctype.h></a> declares several functions useful for classifying and mapping
whose values lie from 0x20 (space) through 0x7E (tilde); the control characters are those whose
values lie from 0 (NUL) through 0x1F (US), and the character 0x7F (DEL).
-[<a name="#p199" href="p199">page 199</a>] (<a href="#Contents">Contents</a>)
+[<a name="p199" href="#p199">page 199</a>] (<a href="#Contents">Contents</a>)
none of iscntrl, isdigit, ispunct, or isspace is true.200) In the "C" locale,
isalpha returns true only for the characters for which isupper or islower is true.
200) The functions islower and isupper test true or false separately for each of these additional
characters; all four combinations are possible.
-[<a name="#p200" href="p200">page 200</a>] (<a href="#Contents">Contents</a>)
+[<a name="p200" href="#p200">page 200</a>] (<a href="#Contents">Contents</a>)
Description
2 The isgraph function tests for any printing character except space (' ').
2 The isspace function tests for any character that is a standard white-space character or
is one of a locale-specific set of characters for which isalnum is false. The standard
-[<a name="#p201" href="p201">page 201</a>] (<a href="#Contents">Contents</a>)
+[<a name="p201" href="#p201">page 201</a>] (<a href="#Contents">Contents</a>)
white-space characters are the following: space (' '), form feed ('\f'), new-line
('\n'), carriage return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). In the
-[<a name="#p202" href="p202">page 202</a>] (<a href="#Contents">Contents</a>)
+[<a name="p202" href="#p202">page 202</a>] (<a href="#Contents">Contents</a>)
<a name="7.4.2.2" href="#7.4.2.2"><b> 7.4.2.2 The toupper function</b></a>
Synopsis
-[<a name="#p203" href="p203">page 203</a>] (<a href="#Contents">Contents</a>)
+[<a name="p203" href="#p203">page 203</a>] (<a href="#Contents">Contents</a>)
<a name="7.5" href="#7.5"><b> 7.5 Errors <errno.h></b></a>
1 The header <a href="#7.5"><errno.h></a> defines several macros, all relating to the reporting of error
value is still zero just before the return.
203) See ''future library directions'' (<a href="#7.30.3">7.30.3</a>).
-[<a name="#p204" href="p204">page 204</a>] (<a href="#Contents">Contents</a>)
+[<a name="p204" href="#p204">page 204</a>] (<a href="#Contents">Contents</a>)
<a name="7.6" href="#7.6"><b> 7.6 Floating-point environment <fenv.h></b></a>
1 The header <a href="#7.6"><fenv.h></a> defines several macros, and declares types and functions that
unaware of them). The responsibilities associated with accessing the floating-point environment fall
on the programmer or program that does so explicitly.
-[<a name="#p205" href="p205">page 205</a>] (<a href="#Contents">Contents</a>)
+[<a name="p205" href="#p205">page 205</a>] (<a href="#Contents">Contents</a>)
6 Each of the macros
FE_DIVBYZERO
209) Even though the rounding direction macros may expand to constants corresponding to the values of
FLT_ROUNDS, they are not required to do so.
-[<a name="#p206" href="p206">page 206</a>] (<a href="#Contents">Contents</a>)
+[<a name="p206" href="#p206">page 206</a>] (<a href="#Contents">Contents</a>)
FE_DFL_ENV
represents the default floating-point environment -- the one installed at program startup
folding). In general, if the state of FENV_ACCESS is ''off'', the translator can assume that default
modes are in effect and the flags are not tested.
-[<a name="#p207" href="p207">page 207</a>] (<a href="#Contents">Contents</a>)
+[<a name="p207" href="#p207">page 207</a>] (<a href="#Contents">Contents</a>)
3 EXAMPLE
#include <a href="#7.6"><fenv.h></a>
point exception; the functions fegetexceptflag and fesetexceptflag deal with the full
content of flags.
-[<a name="#p208" href="p208">page 208</a>] (<a href="#Contents">Contents</a>)
+[<a name="p208" href="#p208">page 208</a>] (<a href="#Contents">Contents</a>)
<a name="7.6.2.2" href="#7.6.2.2"><b> 7.6.2.2 The fegetexceptflag function</b></a>
Synopsis
Hence, enabled traps for floating-point exceptions raised by this function are taken. The specification
in <a href="#F.8.6">F.8.6</a> is in the same spirit.
-[<a name="#p209" href="p209">page 209</a>] (<a href="#Contents">Contents</a>)
+[<a name="p209" href="#p209">page 209</a>] (<a href="#Contents">Contents</a>)
<a name="7.6.2.4" href="#7.6.2.4"><b> 7.6.2.4 The fesetexceptflag function</b></a>
Synopsis
214) This mechanism allows testing several floating-point exceptions with just one function call.
-[<a name="#p210" href="p210">page 210</a>] (<a href="#Contents">Contents</a>)
+[<a name="p210" href="#p210">page 210</a>] (<a href="#Contents">Contents</a>)
#include <a href="#7.6"><fenv.h></a>
/* ... */
was established.
-[<a name="#p211" href="p211">page 211</a>] (<a href="#Contents">Contents</a>)
+[<a name="p211" href="#p211">page 211</a>] (<a href="#Contents">Contents</a>)
4 EXAMPLE Save, set, and restore the rounding direction. Report an error and abort if setting the
rounding direction fails.
(continue on floating-point exceptions) mode, if available, for all floating-point
exceptions.215)
-[<a name="#p212" href="p212">page 212</a>] (<a href="#Contents">Contents</a>)
+[<a name="p212" href="#p212">page 212</a>] (<a href="#Contents">Contents</a>)
Returns
3 The feholdexcept function returns zero if and only if non-stop floating-point
such systems, the feholdexcept function can be used in conjunction with the feupdateenv
function to write routines that hide spurious floating-point exceptions from their callers.
-[<a name="#p213" href="p213">page 213</a>] (<a href="#Contents">Contents</a>)
+[<a name="p213" href="#p213">page 213</a>] (<a href="#Contents">Contents</a>)
4 EXAMPLE Hide spurious underflow floating-point exceptions:
#include <a href="#7.6"><fenv.h></a>
-[<a name="#p214" href="p214">page 214</a>] (<a href="#Contents">Contents</a>)
+[<a name="p214" href="#p214">page 214</a>] (<a href="#Contents">Contents</a>)
<a name="7.7" href="#7.7"><b> 7.7 Characteristics of floating types <float.h></b></a>
1 The header <a href="#7.7"><float.h></a> defines several macros that expand to various limits and
-[<a name="#p215" href="p215">page 215</a>] (<a href="#Contents">Contents</a>)
+[<a name="p215" href="#p215">page 215</a>] (<a href="#Contents">Contents</a>)
<a name="7.8" href="#7.8"><b> 7.8 Format conversion of integer types <inttypes.h></b></a>
1 The header <a href="#7.8"><inttypes.h></a> includes the header <a href="#7.20"><stdint.h></a> and extends it with
different format specifiers may be required for fprintf and fscanf, even when the type is the
same.
-[<a name="#p216" href="p216">page 216</a>] (<a href="#Contents">Contents</a>)
+[<a name="p216" href="#p216">page 216</a>] (<a href="#Contents">Contents</a>)
SCNdN SCNdLEASTN SCNdFASTN SCNdMAX SCNdPTR
SCNiN SCNiLEASTN SCNiFASTN SCNiMAX SCNiPTR
218) The absolute value of the most negative number cannot be represented in two's complement.
-[<a name="#p217" href="p217">page 217</a>] (<a href="#Contents">Contents</a>)
+[<a name="p217" href="#p217">page 217</a>] (<a href="#Contents">Contents</a>)
<a name="7.8.2.2" href="#7.8.2.2"><b> 7.8.2.2 The imaxdiv function</b></a>
Synopsis
-[<a name="#p218" href="p218">page 218</a>] (<a href="#Contents">Contents</a>)
+[<a name="p218" href="#p218">page 218</a>] (<a href="#Contents">Contents</a>)
<a name="7.8.2.4" href="#7.8.2.4"><b> 7.8.2.4 The wcstoimax and wcstoumax functions</b></a>
Synopsis
-[<a name="#p219" href="p219">page 219</a>] (<a href="#Contents">Contents</a>)
+[<a name="p219" href="#p219">page 219</a>] (<a href="#Contents">Contents</a>)
<a name="7.9" href="#7.9"><b> 7.9 Alternative spellings <iso646.h></b></a>
1 The header <a href="#7.9"><iso646.h></a> defines the following eleven macros (on the left) that expand
-[<a name="#p220" href="p220">page 220</a>] (<a href="#Contents">Contents</a>)
+[<a name="p220" href="#p220">page 220</a>] (<a href="#Contents">Contents</a>)
<a name="7.10" href="#7.10"><b> 7.10 Sizes of integer types <limits.h></b></a>
1 The header <a href="#7.10"><limits.h></a> defines several macros that expand to various limits and
-[<a name="#p221" href="p221">page 221</a>] (<a href="#Contents">Contents</a>)
+[<a name="p221" href="#p221">page 221</a>] (<a href="#Contents">Contents</a>)
<a name="7.11" href="#7.11"><b> 7.11 Localization <locale.h></b></a>
1 The header <a href="#7.11"><locale.h></a> declares two functions, one type, and defines several macros.
-[<a name="#p222" href="p222">page 222</a>] (<a href="#Contents">Contents</a>)
+[<a name="p222" href="#p222">page 222</a>] (<a href="#Contents">Contents</a>)
3 The macros defined are NULL (described in <a href="#7.19">7.19</a>); and
LC_ALL
221) The only functions in <a href="#7.4">7.4</a> whose behavior is not affected by the current locale are isdigit and
isxdigit.
-[<a name="#p223" href="p223">page 223</a>] (<a href="#Contents">Contents</a>)
+[<a name="p223" href="#p223">page 223</a>] (<a href="#Contents">Contents</a>)
4 At program startup, the equivalent of
setlocale(LC_ALL, "C");
222) The implementation shall arrange to encode in a string the various categories due to a heterogeneous
locale when category has the value LC_ALL.
-[<a name="#p224" href="p224">page 224</a>] (<a href="#Contents">Contents</a>)
+[<a name="p224" href="#p224">page 224</a>] (<a href="#Contents">Contents</a>)
3 The members of the structure with type char * are pointers to strings, any of which
(except decimal_point) can point to "", to indicate that the value is not available in
-[<a name="#p225" href="p225">page 225</a>] (<a href="#Contents">Contents</a>)
+[<a name="p225" href="#p225">page 225</a>] (<a href="#Contents">Contents</a>)
char n_cs_precedes
Set to 1 or 0 if the currency_symbol respectively precedes or
Set to a value indicating the separation of the int_curr_symbol, the
sign string, and the value for a nonnegative internationally formatted
monetary quantity.
-[<a name="#p226" href="p226">page 226</a>] (<a href="#Contents">Contents</a>)
+[<a name="p226" href="#p226">page 226</a>] (<a href="#Contents">Contents</a>)
char int_n_sep_by_space
Set to a value indicating the separation of the int_curr_symbol, the
4 The sign string immediately succeeds the currency symbol.
-[<a name="#p227" href="p227">page 227</a>] (<a href="#Contents">Contents</a>)
+[<a name="p227" href="#p227">page 227</a>] (<a href="#Contents">Contents</a>)
7 The implementation shall behave as if no library function calls the localeconv
function.
-[<a name="#p228" href="p228">page 228</a>] (<a href="#Contents">Contents</a>)
+[<a name="p228" href="#p228">page 228</a>] (<a href="#Contents">Contents</a>)
11 EXAMPLE 2 The following table illustrates how the cs_precedes, sep_by_space, and sign_posn members
affect the formatted value.
-[<a name="#p229" href="p229">page 229</a>] (<a href="#Contents">Contents</a>)
+[<a name="p229" href="#p229">page 229</a>] (<a href="#Contents">Contents</a>)
<a name="7.12" href="#7.12"><b> 7.12 Mathematics <math.h></b></a>
1 The header <a href="#7.12"><math.h></a> declares two types and many mathematical functions and defines
225) HUGE_VAL, HUGE_VALF, and HUGE_VALL can be positive infinities in an implementation that
supports infinities.
-[<a name="#p230" href="p230">page 230</a>] (<a href="#Contents">Contents</a>)
+[<a name="p230" href="#p230">page 230</a>] (<a href="#Contents">Contents</a>)
translation time.226)
5 The macro
directly with a hardware multiply-add instruction. Software implementations are expected to be
substantially slower.
-[<a name="#p231" href="p231">page 231</a>] (<a href="#Contents">Contents</a>)
+[<a name="p231" href="#p231">page 231</a>] (<a href="#Contents">Contents</a>)
9 The macros
MATH_ERRNO
228) In an implementation that supports infinities, this allows an infinity as an argument to be a domain
error if the mathematical domain of the function does not include the infinity.
-[<a name="#p232" href="p232">page 232</a>] (<a href="#Contents">Contents</a>)
+[<a name="p232" href="#p232">page 232</a>] (<a href="#Contents">Contents</a>)
math_errhandling & MATH_ERRNO is nonzero, the integer expression errno
acquires the value ERANGE; if the integer expression math_errhandling &
also ''flush-to-zero'' underflow.
230) Math errors are being indicated by the floating-point exception flags rather than by errno.
-[<a name="#p233" href="p233">page 233</a>] (<a href="#Contents">Contents</a>)
+[<a name="p233" href="#p233">page 233</a>] (<a href="#Contents">Contents</a>)
<a name="7.12.2" href="#7.12.2"><b> 7.12.2 The FP_CONTRACT pragma</b></a>
Synopsis
know the type that classification is based on. For example, a normal long double value might
become subnormal when converted to double, and zero when converted to float.
-[<a name="#p234" href="p234">page 234</a>] (<a href="#Contents">Contents</a>)
+[<a name="p234" href="#p234">page 234</a>] (<a href="#Contents">Contents</a>)
<a name="7.12.3.2" href="#7.12.3.2"><b> 7.12.3.2 The isfinite macro</b></a>
Synopsis
232) For the isnan macro, the type for determination does not matter unless the implementation supports
NaNs in the evaluation type but not in the semantic type.
-[<a name="#p235" href="p235">page 235</a>] (<a href="#Contents">Contents</a>)
+[<a name="p235" href="#p235">page 235</a>] (<a href="#Contents">Contents</a>)
Returns
3 The isnan macro returns a nonzero value if and only if its argument has a NaN value.
233) The signbit macro reports the sign of all values, including infinities, zeros, and NaNs. If zero is
unsigned, it is treated as positive.
-[<a name="#p236" href="p236">page 236</a>] (<a href="#Contents">Contents</a>)
+[<a name="p236" href="#p236">page 236</a>] (<a href="#Contents">Contents</a>)
<a name="7.12.4" href="#7.12.4"><b> 7.12.4 Trigonometric functions</b></a>
<a name="7.12.4.1" href="#7.12.4.1"><b> 7.12.4.1 The acos functions</b></a>
-[<a name="#p237" href="p237">page 237</a>] (<a href="#Contents">Contents</a>)
+[<a name="p237" href="#p237">page 237</a>] (<a href="#Contents">Contents</a>)
Returns
3 The atan functions return arctan x in the interval [-pi /2, +pi /2] radians.
-[<a name="#p238" href="p238">page 238</a>] (<a href="#Contents">Contents</a>)
+[<a name="p238" href="#p238">page 238</a>] (<a href="#Contents">Contents</a>)
Returns
3 The sin functions return sin x.
2 The asinh functions compute the arc hyperbolic sine of x.
-[<a name="#p239" href="p239">page 239</a>] (<a href="#Contents">Contents</a>)
+[<a name="p239" href="#p239">page 239</a>] (<a href="#Contents">Contents</a>)
Returns
3 The asinh functions return arsinh x.
Description
2 The sinh functions compute the hyperbolic sine of x. A range error occurs if the
magnitude of x is too large.
-[<a name="#p240" href="p240">page 240</a>] (<a href="#Contents">Contents</a>)
+[<a name="p240" href="#p240">page 240</a>] (<a href="#Contents">Contents</a>)
Returns
3 The sinh functions return sinh x.
2 The exp2 functions compute the base-2 exponential of x. A range error occurs if the
magnitude of x is too large.
-[<a name="#p241" href="p241">page 241</a>] (<a href="#Contents">Contents</a>)
+[<a name="p241" href="#p241">page 241</a>] (<a href="#Contents">Contents</a>)
Returns
3 The exp2 functions return 2x .
234) For small magnitude x, expm1(x) is expected to be more accurate than exp(x) - 1.
-[<a name="#p242" href="p242">page 242</a>] (<a href="#Contents">Contents</a>)
+[<a name="p242" href="#p242">page 242</a>] (<a href="#Contents">Contents</a>)
<a name="7.12.6.5" href="#7.12.6.5"><b> 7.12.6.5 The ilogb functions</b></a>
Synopsis
-[<a name="#p243" href="p243">page 243</a>] (<a href="#Contents">Contents</a>)
+[<a name="p243" href="#p243">page 243</a>] (<a href="#Contents">Contents</a>)
Description
2 The log functions compute the base-e (natural) logarithm of x. A domain error occurs if
235) For small magnitude x, log1p(x) is expected to be more accurate than log(1 + x).
-[<a name="#p244" href="p244">page 244</a>] (<a href="#Contents">Contents</a>)
+[<a name="p244" href="#p244">page 244</a>] (<a href="#Contents">Contents</a>)
<a name="7.12.6.10" href="#7.12.6.10"><b> 7.12.6.10 The log2 functions</b></a>
Synopsis
Description
2 The modf functions break the argument value into integral and fractional parts, each of
which has the same type and sign as the argument. They store the integral part (in
-[<a name="#p245" href="p245">page 245</a>] (<a href="#Contents">Contents</a>)
+[<a name="p245" href="#p245">page 245</a>] (<a href="#Contents">Contents</a>)
floating-point format) in the object pointed to by iptr.
Returns
-[<a name="#p246" href="p246">page 246</a>] (<a href="#Contents">Contents</a>)
+[<a name="p246" href="#p246">page 246</a>] (<a href="#Contents">Contents</a>)
<a name="7.12.7.2" href="#7.12.7.2"><b> 7.12.7.2 The fabs functions</b></a>
Synopsis
-[<a name="#p247" href="p247">page 247</a>] (<a href="#Contents">Contents</a>)
+[<a name="p247" href="#p247">page 247</a>] (<a href="#Contents">Contents</a>)
Returns
3 The pow functions return xy .
Description
2 The erfc functions compute the complementary error function of x. A range error
occurs if x is too large.
-[<a name="#p248" href="p248">page 248</a>] (<a href="#Contents">Contents</a>)
+[<a name="p248" href="#p248">page 248</a>] (<a href="#Contents">Contents</a>)
Returns
3 2 (inf)
-[<a name="#p249" href="p249">page 249</a>] (<a href="#Contents">Contents</a>)
+[<a name="p249" href="#p249">page 249</a>] (<a href="#Contents">Contents</a>)
<a name="7.12.9" href="#7.12.9"><b> 7.12.9 Nearest integer functions</b></a>
<a name="7.12.9.1" href="#7.12.9.1"><b> 7.12.9.1 The ceil functions</b></a>
-[<a name="#p250" href="p250">page 250</a>] (<a href="#Contents">Contents</a>)
+[<a name="p250" href="#p250">page 250</a>] (<a href="#Contents">Contents</a>)
Returns
3 The nearbyint functions return the rounded integer value.
-[<a name="#p251" href="p251">page 251</a>] (<a href="#Contents">Contents</a>)
+[<a name="p251" href="#p251">page 251</a>] (<a href="#Contents">Contents</a>)
<a name="7.12.9.6" href="#7.12.9.6"><b> 7.12.9.6 The round functions</b></a>
Synopsis
long double truncl(long double x);
-[<a name="#p252" href="p252">page 252</a>] (<a href="#Contents">Contents</a>)
+[<a name="p252" href="#p252">page 252</a>] (<a href="#Contents">Contents</a>)
Description
2 The trunc functions round their argument to the integer value, in floating format,
| n - x/y | = 1/2, then n is even. If r = 0, its sign shall be that of x.'' This definition is applicable for *
all implementations.
-[<a name="#p253" href="p253">page 253</a>] (<a href="#Contents">Contents</a>)
+[<a name="p253" href="#p253">page 253</a>] (<a href="#Contents">Contents</a>)
Returns
3 The remainder functions return x REM y. If y is zero, whether a domain error occurs
-[<a name="#p254" href="p254">page 254</a>] (<a href="#Contents">Contents</a>)
+[<a name="p254" href="#p254">page 254</a>] (<a href="#Contents">Contents</a>)
<a name="7.12.11.2" href="#7.12.11.2"><b> 7.12.11.2 The nan functions</b></a>
Synopsis
237) The argument values are converted to the type of the function, even by a macro implementation of the
function.
-[<a name="#p255" href="p255">page 255</a>] (<a href="#Contents">Contents</a>)
+[<a name="p255" href="#p255">page 255</a>] (<a href="#Contents">Contents</a>)
<a name="7.12.11.4" href="#7.12.11.4"><b> 7.12.11.4 The nexttoward functions</b></a>
Synopsis
238) The result of the nexttoward functions is determined in the type of the function, without loss of
range or precision in a floating second argument.
-[<a name="#p256" href="p256">page 256</a>] (<a href="#Contents">Contents</a>)
+[<a name="p256" href="#p256">page 256</a>] (<a href="#Contents">Contents</a>)
Description
2 The fmax functions determine the maximum numeric value of their arguments.239)
fmax functions choose the numeric value. See <a href="#F.10.9.2">F.10.9.2</a>.
240) The fmin functions are analogous to the fmax functions in their treatment of NaNs.
-[<a name="#p257" href="p257">page 257</a>] (<a href="#Contents">Contents</a>)
+[<a name="p257" href="#p257">page 257</a>] (<a href="#Contents">Contents</a>)
<a name="7.12.14" href="#7.12.14"><b> 7.12.14 Comparison macros</b></a>
1 The relational and equality operators support the usual mathematical relationships
243) Whether an argument represented in a format wider than its semantic type is converted to the semantic
type is unspecified.
-[<a name="#p258" href="p258">page 258</a>] (<a href="#Contents">Contents</a>)
+[<a name="p258" href="#p258">page 258</a>] (<a href="#Contents">Contents</a>)
Description
2 The isgreaterequal macro determines whether its first argument is greater than or
-[<a name="#p259" href="p259">page 259</a>] (<a href="#Contents">Contents</a>)
+[<a name="p259" href="#p259">page 259</a>] (<a href="#Contents">Contents</a>)
<a name="7.12.14.5" href="#7.12.14.5"><b> 7.12.14.5 The islessgreater macro</b></a>
Synopsis
-[<a name="#p260" href="p260">page 260</a>] (<a href="#Contents">Contents</a>)
+[<a name="p260" href="#p260">page 260</a>] (<a href="#Contents">Contents</a>)
<a name="7.13" href="#7.13"><b> 7.13 Nonlocal jumps <setjmp.h></b></a>
1 The header <a href="#7.13"><setjmp.h></a> defines the macro setjmp, and declares one function and
244) These functions are useful for dealing with unusual conditions encountered in a low-level function of
a program.
-[<a name="#p261" href="p261">page 261</a>] (<a href="#Contents">Contents</a>)
+[<a name="p261" href="#p261">page 261</a>] (<a href="#Contents">Contents</a>)
expression of a selection or iteration statement;
-- the operand of a unary ! operator with the resulting expression being the entire
transfer to a setjmp invocation in a function earlier in the set of nested calls.
246) This includes, but is not limited to, the floating-point status flags and the state of open files.
-[<a name="#p262" href="p262">page 262</a>] (<a href="#Contents">Contents</a>)
+[<a name="p262" href="#p262">page 262</a>] (<a href="#Contents">Contents</a>)
#include <a href="#7.13"><setjmp.h></a>
jmp_buf buf;
-[<a name="#p263" href="p263">page 263</a>] (<a href="#Contents">Contents</a>)
+[<a name="p263" href="#p263">page 263</a>] (<a href="#Contents">Contents</a>)
<a name="7.14" href="#7.14"><b> 7.14 Signal handling <signal.h></b></a>
1 The header <a href="#7.14"><signal.h></a> declares a type and two functions and defines several macros,
(respectively): abort, floating-point exception, illegal instruction, interrupt, segmentation violation,
and termination.
-[<a name="#p264" href="p264">page 264</a>] (<a href="#Contents">Contents</a>)
+[<a name="p264" href="#p264">page 264</a>] (<a href="#Contents">Contents</a>)
<a name="7.14.1" href="#7.14.1"><b> 7.14.1 Specify signal handling</b></a>
<a name="7.14.1.1" href="#7.14.1.1"><b> 7.14.1.1 The signal function</b></a>
called via the abort function).
249) If any signal is generated by an asynchronous signal handler, the behavior is undefined.
-[<a name="#p265" href="p265">page 265</a>] (<a href="#Contents">Contents</a>)
+[<a name="p265" href="#p265">page 265</a>] (<a href="#Contents">Contents</a>)
6 At program startup, the equivalent of
signal(sig, SIG_IGN);
-[<a name="#p266" href="p266">page 266</a>] (<a href="#Contents">Contents</a>)
+[<a name="p266" href="#p266">page 266</a>] (<a href="#Contents">Contents</a>)
<a name="7.15" href="#7.15"><b> 7.15 Alignment <stdalign.h></b></a>
1 The header <a href="#7.15"><stdalign.h></a> defines two macros.
-[<a name="#p267" href="p267">page 267</a>] (<a href="#Contents">Contents</a>)
+[<a name="p267" href="#p267">page 267</a>] (<a href="#Contents">Contents</a>)
<a name="7.16" href="#7.16"><b> 7.16 Variable arguments <stdarg.h></b></a>
1 The header <a href="#7.16"><stdarg.h></a> declares a type and defines four macros, for advancing
250) It is permitted to create a pointer to a va_list and pass that pointer to another function, in which
case the original function may make further use of the original list after the other function returns.
-[<a name="#p268" href="p268">page 268</a>] (<a href="#Contents">Contents</a>)
+[<a name="p268" href="#p268">page 268</a>] (<a href="#Contents">Contents</a>)
macro for the same ap). Each invocation of the va_arg macro modifies ap so that the
values of successive arguments are returned in turn. The parameter type shall be a type
containing the expansion of the va_copy macro, that initialized the va_list ap. The
va_end macro may modify ap so that it is no longer usable (without being reinitialized
-[<a name="#p269" href="p269">page 269</a>] (<a href="#Contents">Contents</a>)
+[<a name="p269" href="#p269">page 269</a>] (<a href="#Contents">Contents</a>)
by the va_start or va_copy macro). If there is no corresponding invocation of the
va_start or va_copy macro, or if the va_end macro is not invoked before the
-[<a name="#p270" href="p270">page 270</a>] (<a href="#Contents">Contents</a>)
+[<a name="p270" href="#p270">page 270</a>] (<a href="#Contents">Contents</a>)
if (n_ptrs > MAXARGS)
n_ptrs = MAXARGS;
-[<a name="#p271" href="p271">page 271</a>] (<a href="#Contents">Contents</a>)
+[<a name="p271" href="#p271">page 271</a>] (<a href="#Contents">Contents</a>)
<a name="7.17" href="#7.17"><b> 7.17 Atomics <stdatomic.h></b></a>
<a name="7.17.1" href="#7.17.1"><b> 7.17.1 Introduction</b></a>
-- An A refers to one of the atomic types.
-[<a name="#p272" href="p272">page 272</a>] (<a href="#Contents">Contents</a>)
+[<a name="p272" href="#p272">page 272</a>] (<a href="#Contents">Contents</a>)
-- A C refers to its corresponding non-atomic type. The atomic_address atomic
type corresponds to the void * non-atomic type.
-[<a name="#p273" href="p273">page 273</a>] (<a href="#Contents">Contents</a>)
+[<a name="p273" href="#p273">page 273</a>] (<a href="#Contents">Contents</a>)
3 Although this function initializes an atomic object, it does not avoid data races;
concurrent access to the variable being initialized, even via an atomic operation,
8 NOTE 2 Atomic operations specifying memory_order_relaxed are relaxed only with respect to
memory ordering. Implementations must still guarantee that any given atomic access to a particular atomic
-[<a name="#p274" href="p274">page 274</a>] (<a href="#Contents">Contents</a>)
+[<a name="p274" href="#p274">page 274</a>] (<a href="#Contents">Contents</a>)
object be indivisible with respect to all other atomic accesses to that object.
251) Among other implications, atomic variables shall not decay.
-[<a name="#p275" href="p275">page 275</a>] (<a href="#Contents">Contents</a>)
+[<a name="p275" href="#p275">page 275</a>] (<a href="#Contents">Contents</a>)
atomic_store_explicit(&y, 42, memory_order_relaxed);
r1 = atomic_load_explicit(&y, memory_order_relaxed);
-[<a name="#p276" href="p276">page 276</a>] (<a href="#Contents">Contents</a>)
+[<a name="p276" href="#p276">page 276</a>] (<a href="#Contents">Contents</a>)
Returns
3 The kill_dependency macro returns the value of y.
memory_order_seq_cst.
-[<a name="#p277" href="p277">page 277</a>] (<a href="#Contents">Contents</a>)
+[<a name="p277" href="#p277">page 277</a>] (<a href="#Contents">Contents</a>)
Returns
3 The atomic_thread_fence function returns no value.
3 The atomic_is_lock_free generic function returns nonzero (true) if and only if the
object's operations are lock-free. The result of a lock-free query on one object cannot be
-[<a name="#p278" href="p278">page 278</a>] (<a href="#Contents">Contents</a>)
+[<a name="p278" href="#p278">page 278</a>] (<a href="#Contents">Contents</a>)
inferred from the result of a lock-free query on another object.
<a name="7.17.6" href="#7.17.6"><b> 7.17.6 Atomic integer and address types</b></a>
-[<a name="#p279" href="p279">page 279</a>] (<a href="#Contents">Contents</a>)
+[<a name="p279" href="#p279">page 279</a>] (<a href="#Contents">Contents</a>)
Atomic type name Direct type
atomic_char _Atomic char
3 The atomic_bool type provides an atomic boolean.
-[<a name="#p280" href="p280">page 280</a>] (<a href="#Contents">Contents</a>)
+[<a name="p280" href="#p280">page 280</a>] (<a href="#Contents">Contents</a>)
4 The atomic_address type provides atomic void * operations. The unit of
addition/subtraction shall be one byte.
-[<a name="#p281" href="p281">page 281</a>] (<a href="#Contents">Contents</a>)
+[<a name="p281" href="#p281">page 281</a>] (<a href="#Contents">Contents</a>)
<a name="7.17.7.3" href="#7.17.7.3"><b> 7.17.7.3 The atomic_exchange generic functions</b></a>
Synopsis
-[<a name="#p282" href="p282">page 282</a>] (<a href="#Contents">Contents</a>)
+[<a name="p282" href="#p282">page 282</a>] (<a href="#Contents">Contents</a>)
if (*object == *expected)
*object = desired;
3 Atomically replaces the value pointed to by object with the result of the computation
applied to the value pointed to by object and the given operand. Memory is affected
according to the value of order. These operations are atomic read-modify-write
-[<a name="#p283" href="p283">page 283</a>] (<a href="#Contents">Contents</a>)
+[<a name="p283" href="#p283">page 283</a>] (<a href="#Contents">Contents</a>)
operations (<a href="#5.1.2.4">5.1.2.4</a>). For signed integer types, arithmetic is defined to use two's
complement representation with silent wrap-around on overflow; there are no undefined
-[<a name="#p284" href="p284">page 284</a>] (<a href="#Contents">Contents</a>)
+[<a name="p284" href="#p284">page 284</a>] (<a href="#Contents">Contents</a>)
Returns
3 Atomically, the value of the object immediately before the effects.
-[<a name="#p285" href="p285">page 285</a>] (<a href="#Contents">Contents</a>)
+[<a name="p285" href="#p285">page 285</a>] (<a href="#Contents">Contents</a>)
<a name="7.18" href="#7.18"><b> 7.18 Boolean type and values <stdbool.h></b></a>
1 The header <a href="#7.18"><stdbool.h></a> defines four macros.
252) See ''future library directions'' (<a href="#7.30.7">7.30.7</a>).
-[<a name="#p286" href="p286">page 286</a>] (<a href="#Contents">Contents</a>)
+[<a name="p286" href="#p286">page 286</a>] (<a href="#Contents">Contents</a>)
<a name="7.19" href="#7.19"><b> 7.19 Common definitions <stddef.h></b></a>
1 The header <a href="#7.19"><stddef.h></a> defines the following macros and declares the following types.
greater than that of signed long int unless the implementation supports objects
large enough to make this necessary.
-[<a name="#p287" href="p287">page 287</a>] (<a href="#Contents">Contents</a>)
+[<a name="p287" href="#p287">page 287</a>] (<a href="#Contents">Contents</a>)
Forward references: localization (<a href="#7.11">7.11</a>).
-[<a name="#p288" href="p288">page 288</a>] (<a href="#Contents">Contents</a>)
+[<a name="p288" href="#p288">page 288</a>] (<a href="#Contents">Contents</a>)
<a name="7.20" href="#7.20"><b> 7.20 Integer types <stdint.h></b></a>
1 The header <a href="#7.20"><stdint.h></a> declares sets of integer types having specified widths, and
253) See ''future library directions'' (<a href="#7.30.8">7.30.8</a>).
254) Some of these types may denote implementation-defined extended integer types.
-[<a name="#p289" href="p289">page 289</a>] (<a href="#Contents">Contents</a>)
+[<a name="p289" href="#p289">page 289</a>] (<a href="#Contents">Contents</a>)
<a name="7.20.1.1" href="#7.20.1.1"><b> 7.20.1.1 Exact-width integer types</b></a>
1 The typedef name intN_t designates a signed integer type with width N , no padding
grounds for choosing one type over another, it will simply pick some integer type satisfying the
signedness and width requirements.
-[<a name="#p290" href="p290">page 290</a>] (<a href="#Contents">Contents</a>)
+[<a name="p290" href="#p290">page 290</a>] (<a href="#Contents">Contents</a>)
3 The following types are required:
int_fast8_t uint_fast8_t
magnitude (absolute value) than the corresponding value given below, with the same sign,
except where stated to be exactly the given value.
-[<a name="#p291" href="p291">page 291</a>] (<a href="#Contents">Contents</a>)
+[<a name="p291" href="#p291">page 291</a>] (<a href="#Contents">Contents</a>)
<a name="7.20.2.1" href="#7.20.2.1"><b> 7.20.2.1 Limits of exact-width integer types</b></a>
1 -- minimum values of exact-width signed integer types
-[<a name="#p292" href="p292">page 292</a>] (<a href="#Contents">Contents</a>)
+[<a name="p292" href="#p292">page 292</a>] (<a href="#Contents">Contents</a>)
<a name="7.20.2.5" href="#7.20.2.5"><b> 7.20.2.5 Limits of greatest-width integer types</b></a>
1 -- minimum value of greatest-width signed integer type
256) A freestanding implementation need not provide all of these types.
-[<a name="#p293" href="p293">page 293</a>] (<a href="#Contents">Contents</a>)
+[<a name="p293" href="#p293">page 293</a>] (<a href="#Contents">Contents</a>)
WINT_MIN see below
WINT_MAX see below
257) The values WCHAR_MIN and WCHAR_MAX do not necessarily correspond to members of the extended
character set.
-[<a name="#p294" href="p294">page 294</a>] (<a href="#Contents">Contents</a>)
+[<a name="p294" href="#p294">page 294</a>] (<a href="#Contents">Contents</a>)
<a name="7.20.4.2" href="#7.20.4.2"><b> 7.20.4.2 Macros for greatest-width integer constants</b></a>
1 The following macro expands to an integer constant expression having the value specified
-[<a name="#p295" href="p295">page 295</a>] (<a href="#Contents">Contents</a>)
+[<a name="p295" href="#p295">page 295</a>] (<a href="#Contents">Contents</a>)
<a name="7.21" href="#7.21"><b> 7.21 Input/output <stdio.h></b></a>
<a name="7.21.1" href="#7.21.1"><b> 7.21.1 Introduction</b></a>
-[<a name="#p296" href="p296">page 296</a>] (<a href="#Contents">Contents</a>)
+[<a name="p296" href="#p296">page 296</a>] (<a href="#Contents">Contents</a>)
guarantees can be opened;258)
L_tmpnam
string. Of course, file name string contents are subject to other system-specific constraints; therefore
all possible strings of length FILENAME_MAX cannot be expected to be opened successfully.
-[<a name="#p297" href="p297">page 297</a>] (<a href="#Contents">Contents</a>)
+[<a name="p297" href="#p297">page 297</a>] (<a href="#Contents">Contents</a>)
-- The wide character input/output functions -- the union of the ungetwc function, the
wide character input functions, and the wide character output functions.
implementation, there need be no new-line characters in a text stream nor any limit to the length of a
line.
-[<a name="#p298" href="p298">page 298</a>] (<a href="#Contents">Contents</a>)
+[<a name="p298" href="#p298">page 298</a>] (<a href="#Contents">Contents</a>)
stream becomes a wide-oriented stream. Similarly, once a byte input/output function has
been applied to a stream without orientation, the stream becomes a byte-oriented stream.
260) The three predefined streams stdin, stdout, and stderr are unoriented at program startup.
-[<a name="#p299" href="p299">page 299</a>] (<a href="#Contents">Contents</a>)
+[<a name="p299" href="#p299">page 299</a>] (<a href="#Contents">Contents</a>)
<a name="7.21.3" href="#7.21.3"><b> 7.21.3 Files</b></a>
1 A stream is associated with an external file (which may be a physical device) by opening
6 The address of the FILE object used to control a stream may be significant; a copy of a
FILE object need not serve in place of the original.
-[<a name="#p300" href="p300">page 300</a>] (<a href="#Contents">Contents</a>)
+[<a name="p300" href="#p300">page 300</a>] (<a href="#Contents">Contents</a>)
7 At program startup, three text streams are predefined and need not be opened explicitly
-- standard input (for reading conventional input), standard output (for writing
undefined behavior for a binary stream (because of possible trailing null characters) or for any stream
with state-dependent encoding that does not assuredly end in the initial shift state.
-[<a name="#p301" href="p301">page 301</a>] (<a href="#Contents">Contents</a>)
+[<a name="p301" href="#p301">page 301</a>] (<a href="#Contents">Contents</a>)
multibyte character. The wide character input/output functions and the byte input/output
functions store the value of the macro EILSEQ in errno if and only if an encoding error
-[<a name="#p302" href="p302">page 302</a>] (<a href="#Contents">Contents</a>)
+[<a name="p302" href="#p302">page 302</a>] (<a href="#Contents">Contents</a>)
Returns
3 The rename function returns zero if the operation succeeds, nonzero if it fails,262) in
implementation. It is still necessary to use the remove function to remove such files when their use
is ended, and before program termination.
-[<a name="#p303" href="p303">page 303</a>] (<a href="#Contents">Contents</a>)
+[<a name="p303" href="#p303">page 303</a>] (<a href="#Contents">Contents</a>)
least TMP_MAX different strings, but any or all of them may already be in use by existing
files and thus not be suitable return values.
-[<a name="#p304" href="p304">page 304</a>] (<a href="#Contents">Contents</a>)
+[<a name="p304" href="#p304">page 304</a>] (<a href="#Contents">Contents</a>)
<a name="7.21.5.2" href="#7.21.5.2"><b> 7.21.5.2 The fflush function</b></a>
Synopsis
remaining characters, or it might use them to select different kinds of a file (some of which might not
conform to the properties in <a href="#7.21.2">7.21.2</a>).
-[<a name="#p305" href="p305">page 305</a>] (<a href="#Contents">Contents</a>)
+[<a name="p305" href="#p305">page 305</a>] (<a href="#Contents">Contents</a>)
wbx create binary file for writing
ab append; open or create binary file for writing at end-of-file
-[<a name="#p306" href="p306">page 306</a>] (<a href="#Contents">Contents</a>)
+[<a name="p306" href="#p306">page 306</a>] (<a href="#Contents">Contents</a>)
<a name="7.21.5.4" href="#7.21.5.4"><b> 7.21.5.4 The freopen function</b></a>
Synopsis
(stderr, stdin, or stdout), as those identifiers need not be modifiable lvalues to which the value
returned by the fopen function may be assigned.
-[<a name="#p307" href="p307">page 307</a>] (<a href="#Contents">Contents</a>)
+[<a name="p307" href="#p307">page 307</a>] (<a href="#Contents">Contents</a>)
Returns
3 The setbuf function returns no value.
266) The buffer has to have a lifetime at least as great as the open stream, so the stream should be closed
before a buffer that has automatic storage duration is deallocated upon block exit.
-[<a name="#p308" href="p308">page 308</a>] (<a href="#Contents">Contents</a>)
+[<a name="p308" href="#p308">page 308</a>] (<a href="#Contents">Contents</a>)
<a name="7.21.6" href="#7.21.6"><b> 7.21.6 Formatted input/output functions</b></a>
1 The formatted input/output functions shall behave as if there is a sequence point after the
267) The fprintf functions perform writes to memory for the %n specifier.
268) Note that 0 is taken as a flag, not as the beginning of a field width.
-[<a name="#p309" href="p309">page 309</a>] (<a href="#Contents">Contents</a>)
+[<a name="p309" href="#p309">page 309</a>] (<a href="#Contents">Contents</a>)
s conversions. The precision takes the form of a period (.) followed either by an
asterisk * (described later) or by an optional decimal integer; if only the period is
269) The results of all floating conversions of a negative zero, and of negative values that round to zero,
include a minus sign.
-[<a name="#p310" href="p310">page 310</a>] (<a href="#Contents">Contents</a>)
+[<a name="p310" href="#p310">page 310</a>] (<a href="#Contents">Contents</a>)
conversions, if a precision is specified, the 0 flag is ignored. For other
conversions, the behavior is undefined.
argument.
-[<a name="#p311" href="p311">page 311</a>] (<a href="#Contents">Contents</a>)
+[<a name="p311" href="#p311">page 311</a>] (<a href="#Contents">Contents</a>)
L Specifies that a following a, A, e, E, f, F, g, or G conversion specifier
applies to a long double argument.
270) When applied to infinite and NaN values, the -, +, and space flag characters have their usual meaning;
the # and 0 flag characters have no effect.
-[<a name="#p312" href="p312">page 312</a>] (<a href="#Contents">Contents</a>)
+[<a name="p312" href="#p312">page 312</a>] (<a href="#Contents">Contents</a>)
6; if the precision is zero and the # flag is not specified, no decimal-point
character appears. The value is rounded to the appropriate number of digits.
271) Binary implementations can choose the hexadecimal digit to the left of the decimal-point character so
that subsequent digits align to nibble (4-bit) boundaries.
-[<a name="#p313" href="p313">page 313</a>] (<a href="#Contents">Contents</a>)
+[<a name="p313" href="#p313">page 313</a>] (<a href="#Contents">Contents</a>)
distinguish272) values of type double, except that trailing zeros may be
omitted; if the precision is zero and the # flag is not specified, no decimal-
decimal-point character.
273) No special provisions are made for multibyte characters.
-[<a name="#p314" href="p314">page 314</a>] (<a href="#Contents">Contents</a>)
+[<a name="p314" href="#p314">page 314</a>] (<a href="#Contents">Contents</a>)
the precision, the function would need to access a wide character one past the
end of the array. In no case is a partial multibyte character written.274)
given format specifier. The number of significant digits is determined by the format specifier, and in
the case of fixed-point conversion by the source value as well.
-[<a name="#p315" href="p315">page 315</a>] (<a href="#Contents">Contents</a>)
+[<a name="p315" href="#p315">page 315</a>] (<a href="#Contents">Contents</a>)
of the resultant decimal string D should satisfy L <= D <= U, with the extra stipulation that
the error should have a correct sign for the current rounding direction.
-[<a name="#p316" href="p316">page 316</a>] (<a href="#Contents">Contents</a>)
+[<a name="p316" href="#p316">page 316</a>] (<a href="#Contents">Contents</a>)
<a name="7.21.6.2" href="#7.21.6.2"><b> 7.21.6.2 The fscanf function</b></a>
Synopsis
7 A directive that is a conversion specification defines a set of matching input sequences, as
described below for each specifier. A conversion specification is executed in the
-[<a name="#p317" href="p317">page 317</a>] (<a href="#Contents">Contents</a>)
+[<a name="p317" href="#p317">page 317</a>] (<a href="#Contents">Contents</a>)
following steps:
8 Input white-space characters (as specified by the isspace function) are skipped, unless
278) fscanf pushes back at most one input character onto the input stream. Therefore, some sequences
that are acceptable to strtod, strtol, etc., are unacceptable to fscanf.
-[<a name="#p318" href="p318">page 318</a>] (<a href="#Contents">Contents</a>)
+[<a name="p318" href="#p318">page 318</a>] (<a href="#Contents">Contents</a>)
j Specifies that a following d, i, o, u, x, X, or n conversion specifier applies
to an argument with type pointer to intmax_t or uintmax_t.
function. The corresponding argument shall be a pointer to floating.
-[<a name="#p319" href="p319">page 319</a>] (<a href="#Contents">Contents</a>)
+[<a name="p319" href="#p319">page 319</a>] (<a href="#Contents">Contents</a>)
c Matches a sequence of characters of exactly the number specified by the field
width (1 if no field width is present in the directive).279)
conversion specifiers -- the extent of the input field is determined on a byte-by-byte basis. The
resulting field is nevertheless a sequence of multibyte characters that begins in the initial shift state.
-[<a name="#p320" href="p320">page 320</a>] (<a href="#Contents">Contents</a>)
+[<a name="p320" href="#p320">page 320</a>] (<a href="#Contents">Contents</a>)
before the first multibyte character is converted. The corresponding argument
shall be a pointer to the initial element of an array of wchar_t large enough
280) See ''future library directions'' (<a href="#7.30.9">7.30.9</a>).
-[<a name="#p321" href="p321">page 321</a>] (<a href="#Contents">Contents</a>)
+[<a name="p321" href="#p321">page 321</a>] (<a href="#Contents">Contents</a>)
15 Trailing white space (including new-line characters) is left unread unless matched by a
directive. The success of literal matches and suppressed assignments is not directly
dirt
100ergs of energy
-[<a name="#p322" href="p322">page 322</a>] (<a href="#Contents">Contents</a>)
+[<a name="p322" href="#p322">page 322</a>] (<a href="#Contents">Contents</a>)
the execution of the above example will be analogous to the following assignments:
quant = 2; strcpy(units, "quarts"); strcpy(item, "oil");
-[<a name="#p323" href="p323">page 323</a>] (<a href="#Contents">Contents</a>)
+[<a name="p323" href="#p323">page 323</a>] (<a href="#Contents">Contents</a>)
#include <a href="#7.21"><stdio.h></a>
#include <a href="#7.19"><stddef.h></a>
-[<a name="#p324" href="p324">page 324</a>] (<a href="#Contents">Contents</a>)
+[<a name="p324" href="#p324">page 324</a>] (<a href="#Contents">Contents</a>)
Returns
3 The scanf function returns the value of the macro EOF if an input failure occurs before
3 The sprintf function returns the number of characters written in the array, not
counting the terminating null character, or a negative value if an encoding error occurred.
-[<a name="#p325" href="p325">page 325</a>] (<a href="#Contents">Contents</a>)
+[<a name="p325" href="#p325">page 325</a>] (<a href="#Contents">Contents</a>)
<a name="7.21.6.7" href="#7.21.6.7"><b> 7.21.6.7 The sscanf function</b></a>
Synopsis
281) As the functions vfprintf, vfscanf, vprintf, vscanf, vsnprintf, vsprintf, and
vsscanf invoke the va_arg macro, the value of arg after the return is indeterminate.
-[<a name="#p326" href="p326">page 326</a>] (<a href="#Contents">Contents</a>)
+[<a name="p326" href="#p326">page 326</a>] (<a href="#Contents">Contents</a>)
#include <a href="#7.16"><stdarg.h></a>
#include <a href="#7.21"><stdio.h></a>
2 The vprintf function is equivalent to printf, with the variable argument list
replaced by arg, which shall have been initialized by the va_start macro (and
-[<a name="#p327" href="p327">page 327</a>] (<a href="#Contents">Contents</a>)
+[<a name="p327" href="#p327">page 327</a>] (<a href="#Contents">Contents</a>)
possibly subsequent va_arg calls). The vprintf function does not invoke the
va_end macro.281)
-[<a name="#p328" href="p328">page 328</a>] (<a href="#Contents">Contents</a>)
+[<a name="p328" href="#p328">page 328</a>] (<a href="#Contents">Contents</a>)
Returns
3 The vsnprintf function returns the number of characters that would have been written
Returns
3 The vsscanf function returns the value of the macro EOF if an input failure occurs
before the first conversion (if any) has completed. Otherwise, the vsscanf function
-[<a name="#p329" href="p329">page 329</a>] (<a href="#Contents">Contents</a>)
+[<a name="p329" href="#p329">page 329</a>] (<a href="#Contents">Contents</a>)
returns the number of input items assigned, which can be fewer than provided for, or even
zero, in the event of an early matching failure.
282) An end-of-file and a read error can be distinguished by use of the feof and ferror functions.
-[<a name="#p330" href="p330">page 330</a>] (<a href="#Contents">Contents</a>)
+[<a name="p330" href="#p330">page 330</a>] (<a href="#Contents">Contents</a>)
<a name="7.21.7.3" href="#7.21.7.3"><b> 7.21.7.3 The fputc function</b></a>
Synopsis
-[<a name="#p331" href="p331">page 331</a>] (<a href="#Contents">Contents</a>)
+[<a name="p331" href="#p331">page 331</a>] (<a href="#Contents">Contents</a>)
Returns
3 The getc function returns the next character from the input stream pointed to by
2 The putchar function is equivalent to putc with the second argument stdout.
-[<a name="#p332" href="p332">page 332</a>] (<a href="#Contents">Contents</a>)
+[<a name="p332" href="#p332">page 332</a>] (<a href="#Contents">Contents</a>)
Returns
3 The putchar function returns the character written. If a write error occurs, the error
back. For a text stream, the value of its file position indicator after a successful call to the
ungetc function is unspecified until all pushed-back characters are read or discarded.
-[<a name="#p333" href="p333">page 333</a>] (<a href="#Contents">Contents</a>)
+[<a name="p333" href="#p333">page 333</a>] (<a href="#Contents">Contents</a>)
For a binary stream, its file position indicator is decremented by each successful call to
the ungetc function; if its value was zero before a call, it is indeterminate after the
283) See ''future library directions'' (<a href="#7.30.9">7.30.9</a>).
-[<a name="#p334" href="p334">page 334</a>] (<a href="#Contents">Contents</a>)
+[<a name="p334" href="#p334">page 334</a>] (<a href="#Contents">Contents</a>)
<a name="7.21.8.2" href="#7.21.8.2"><b> 7.21.8.2 The fwrite function</b></a>
Synopsis
-[<a name="#p335" href="p335">page 335</a>] (<a href="#Contents">Contents</a>)
+[<a name="p335" href="#p335">page 335</a>] (<a href="#Contents">Contents</a>)
<a name="7.21.9.2" href="#7.21.9.2"><b> 7.21.9.2 The fseek function</b></a>
Synopsis
on the stream, clears the end-of-file indicator for the stream, and then establishes the new
parse state and position. After a successful fsetpos call, the next operation on an
-[<a name="#p336" href="p336">page 336</a>] (<a href="#Contents">Contents</a>)
+[<a name="p336" href="#p336">page 336</a>] (<a href="#Contents">Contents</a>)
update stream may be either input or output.
Returns
-[<a name="#p337" href="p337">page 337</a>] (<a href="#Contents">Contents</a>)
+[<a name="p337" href="#p337">page 337</a>] (<a href="#Contents">Contents</a>)
<a name="7.21.10" href="#7.21.10"><b> 7.21.10 Error-handling functions</b></a>
<a name="7.21.10.1" href="#7.21.10.1"><b> 7.21.10.1 The clearerr function</b></a>
-[<a name="#p338" href="p338">page 338</a>] (<a href="#Contents">Contents</a>)
+[<a name="p338" href="#p338">page 338</a>] (<a href="#Contents">Contents</a>)
<a name="7.21.10.4" href="#7.21.10.4"><b> 7.21.10.4 The perror function</b></a>
Synopsis
-[<a name="#p339" href="p339">page 339</a>] (<a href="#Contents">Contents</a>)
+[<a name="p339" href="#p339">page 339</a>] (<a href="#Contents">Contents</a>)
<a name="7.22" href="#7.22"><b> 7.22 General utilities <stdlib.h></b></a>
1 The header <a href="#7.22"><stdlib.h></a> declares five types and several functions of general utility, and
284) See ''future library directions'' (<a href="#7.30.10">7.30.10</a>).
-[<a name="#p340" href="p340">page 340</a>] (<a href="#Contents">Contents</a>)
+[<a name="p340" href="#p340">page 340</a>] (<a href="#Contents">Contents</a>)
<a name="7.22.1" href="#7.22.1"><b> 7.22.1 Numeric conversion functions</b></a>
1 The functions atof, atoi, atol, and atoll need not affect the value of the integer
-[<a name="#p341" href="p341">page 341</a>] (<a href="#Contents">Contents</a>)
+[<a name="p341" href="#p341">page 341</a>] (<a href="#Contents">Contents</a>)
<a name="7.22.1.3" href="#7.22.1.3"><b> 7.22.1.3 The strtod, strtof, and strtold functions</b></a>
Synopsis
4 If the subject sequence has the expected form for a floating-point number, the sequence of
characters starting with the first digit or the decimal-point character (whichever occurs
first) is interpreted as a floating constant according to the rules of <a href="#6.4.4.2">6.4.4.2</a>, except that the
-[<a name="#p342" href="p342">page 342</a>] (<a href="#Contents">Contents</a>)
+[<a name="p342" href="#p342">page 342</a>] (<a href="#Contents">Contents</a>)
decimal-point character is used in place of a period, and that if neither an exponent part
nor a decimal-point character appears in a decimal floating point number, or if a binary
286) An implementation may use the n-char sequence to determine extra information to be represented in
the NaN's significand.
-[<a name="#p343" href="p343">page 343</a>] (<a href="#Contents">Contents</a>)
+[<a name="p343" href="#p343">page 343</a>] (<a href="#Contents">Contents</a>)
stipulation that the error with respect to D should have a correct sign for the current
rounding direction.287)
287) DECIMAL_DIG, defined in <a href="#7.7"><float.h></a>, 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.
-[<a name="#p344" href="p344">page 344</a>] (<a href="#Contents">Contents</a>)
+[<a name="p344" href="#p344">page 344</a>] (<a href="#Contents">Contents</a>)
resembling an integer represented in some radix determined by the value of base, and a
final string of one or more unrecognized characters, including the terminating null
-[<a name="#p345" href="p345">page 345</a>] (<a href="#Contents">Contents</a>)
+[<a name="p345" href="#p345">page 345</a>] (<a href="#Contents">Contents</a>)
<a name="7.22.2" href="#7.22.2"><b> 7.22.2 Pseudo-random sequence generation functions</b></a>
<a name="7.22.2.1" href="#7.22.2.1"><b> 7.22.2.1 The rand function</b></a>
are known to produce sequences with distressingly non-random low-order bits. Applications with
particular requirements should use a generator that is known to be sufficient for their needs.
-[<a name="#p346" href="p346">page 346</a>] (<a href="#Contents">Contents</a>)
+[<a name="p346" href="#p346">page 346</a>] (<a href="#Contents">Contents</a>)
5 EXAMPLE The following functions define a portable implementation of rand and srand.
static unsigned long int next = 1;
-[<a name="#p347" href="p347">page 347</a>] (<a href="#Contents">Contents</a>)
+[<a name="p347" href="#p347">page 347</a>] (<a href="#Contents">Contents</a>)
<a name="7.22.3.2" href="#7.22.3.2"><b> 7.22.3.2 The calloc function</b></a>
Synopsis
289) Note that this need not be the same as the representation of floating-point zero or a null pointer
constant.
-[<a name="#p348" href="p348">page 348</a>] (<a href="#Contents">Contents</a>)
+[<a name="p348" href="#p348">page 348</a>] (<a href="#Contents">Contents</a>)
Returns
3 The malloc function returns either a null pointer or a pointer to the allocated space.
-[<a name="#p349" href="p349">page 349</a>] (<a href="#Contents">Contents</a>)
+[<a name="p349" href="#p349">page 349</a>] (<a href="#Contents">Contents</a>)
Returns
3 The abort function does not return to its caller.
291) The at_quick_exit function registrations are distinct from the atexit registrations, so
applications may need to call both registration functions with the same argument.
-[<a name="#p350" href="p350">page 350</a>] (<a href="#Contents">Contents</a>)
+[<a name="p350" href="#p350">page 350</a>] (<a href="#Contents">Contents</a>)
<a name="7.22.4.4" href="#7.22.4.4"><b> 7.22.4.4 The exit function</b></a>
Synopsis
292) Each function is called as many times as it was registered, and in the correct order with respect to
other registered functions.
-[<a name="#p351" href="p351">page 351</a>] (<a href="#Contents">Contents</a>)
+[<a name="p351" href="#p351">page 351</a>] (<a href="#Contents">Contents</a>)
the exit function (<a href="#7.22.4.4">7.22.4.4</a>). Whether open streams with unwritten buffered data are
flushed, open streams are closed, or temporary files are removed is implementation-
293) Many implementations provide non-standard functions that modify the environment list.
-[<a name="#p352" href="p352">page 352</a>] (<a href="#Contents">Contents</a>)
+[<a name="p352" href="#p352">page 352</a>] (<a href="#Contents">Contents</a>)
any previously registered functions that had already been called at the time it was
registered. If, during the call to any such function, a call to the longjmp function is
294) Each function is called as many times as it was registered, and in the correct order with respect to
other registered functions.
-[<a name="#p353" href="p353">page 353</a>] (<a href="#Contents">Contents</a>)
+[<a name="p353" href="#p353">page 353</a>] (<a href="#Contents">Contents</a>)
3 The comparison function shall not alter the contents of the array. The implementation
may reorder elements of the array between calls to the comparison function, but shall not
296) In practice, the entire array is sorted according to the comparison function.
-[<a name="#p354" href="p354">page 354</a>] (<a href="#Contents">Contents</a>)
+[<a name="p354" href="#p354">page 354</a>] (<a href="#Contents">Contents</a>)
matched is unspecified.
<a name="7.22.5.2" href="#7.22.5.2"><b> 7.22.5.2 The qsort function</b></a>
297) The absolute value of the most negative number cannot be represented in two's complement.
-[<a name="#p355" href="p355">page 355</a>] (<a href="#Contents">Contents</a>)
+[<a name="p355" href="#p355">page 355</a>] (<a href="#Contents">Contents</a>)
<a name="7.22.6.2" href="#7.22.6.2"><b> 7.22.6.2 The div, ldiv, and lldiv functions</b></a>
Synopsis
298) If the locale employs special bytes to change the shift state, these bytes do not produce separate wide
character codes, but are grouped with an adjacent multibyte character.
-[<a name="#p356" href="p356">page 356</a>] (<a href="#Contents">Contents</a>)
+[<a name="p356" href="#p356">page 356</a>] (<a href="#Contents">Contents</a>)
mbtowc((wchar_t *)0, (const char *)0, 0);
mbtowc((wchar_t *)0, s, n);
macro.
-[<a name="#p357" href="p357">page 357</a>] (<a href="#Contents">Contents</a>)
+[<a name="p357" href="#p357">page 357</a>] (<a href="#Contents">Contents</a>)
<a name="7.22.7.3" href="#7.22.7.3"><b> 7.22.7.3 The wctomb function</b></a>
Synopsis
No multibyte characters that follow a null character (which is converted into a null wide
character) will be examined or converted. Each multibyte character is converted as if by
a call to the mbtowc function, except that the conversion state of the mbtowc function is
-[<a name="#p358" href="p358">page 358</a>] (<a href="#Contents">Contents</a>)
+[<a name="p358" href="#p358">page 358</a>] (<a href="#Contents">Contents</a>)
not affected.
3 No more than n elements will be modified in the array pointed to by pwcs. If copying
299) The array will not be null-terminated if the value returned is n.
-[<a name="#p359" href="p359">page 359</a>] (<a href="#Contents">Contents</a>)
+[<a name="p359" href="#p359">page 359</a>] (<a href="#Contents">Contents</a>)
<a name="7.23" href="#7.23"><b> 7.23 String handling <string.h></b></a>
<a name="7.23.1" href="#7.23.1"><b> 7.23.1 String function conventions</b></a>
300) See ''future library directions'' (<a href="#7.30.11">7.30.11</a>).
-[<a name="#p360" href="p360">page 360</a>] (<a href="#Contents">Contents</a>)
+[<a name="p360" href="#p360">page 360</a>] (<a href="#Contents">Contents</a>)
<a name="7.23.2.2" href="#7.23.2.2"><b> 7.23.2.2 The memmove function</b></a>
Synopsis
-[<a name="#p361" href="p361">page 361</a>] (<a href="#Contents">Contents</a>)
+[<a name="p361" href="#p361">page 361</a>] (<a href="#Contents">Contents</a>)
s1.301) If copying takes place between objects that overlap, the behavior is undefined.
3 If the array pointed to by s2 is a string that is shorter than n characters, null characters
302) Thus, the maximum number of characters that can end up in the array pointed to by s1 is
strlen(s1)+n+1.
-[<a name="#p362" href="p362">page 362</a>] (<a href="#Contents">Contents</a>)
+[<a name="p362" href="#p362">page 362</a>] (<a href="#Contents">Contents</a>)
takes place between objects that overlap, the behavior is undefined.
Returns
indeterminate. Strings shorter than their allocated space and unions may also cause problems in
comparison.
-[<a name="#p363" href="p363">page 363</a>] (<a href="#Contents">Contents</a>)
+[<a name="p363" href="#p363">page 363</a>] (<a href="#Contents">Contents</a>)
pointed to by s2.
<a name="7.23.4.3" href="#7.23.4.3"><b> 7.23.4.3 The strcoll function</b></a>
string into the array pointed to by s1. The transformation is such that if the strcmp
function is applied to two transformed strings, it returns a value greater than, equal to, or
-[<a name="#p364" href="p364">page 364</a>] (<a href="#Contents">Contents</a>)
+[<a name="p364" href="#p364">page 364</a>] (<a href="#Contents">Contents</a>)
less than zero, corresponding to the result of the strcoll function applied to the same
two original strings. No more than n characters are placed into the resulting array
-[<a name="#p365" href="p365">page 365</a>] (<a href="#Contents">Contents</a>)
+[<a name="p365" href="#p365">page 365</a>] (<a href="#Contents">Contents</a>)
Returns
3 The strchr function returns a pointer to the located character, or a null pointer if the
-[<a name="#p366" href="p366">page 366</a>] (<a href="#Contents">Contents</a>)
+[<a name="p366" href="#p366">page 366</a>] (<a href="#Contents">Contents</a>)
Returns
3 The strrchr function returns a pointer to the character, or a null pointer if c does not
by s2. The first call in the sequence has a non-null first argument; subsequent calls in the
sequence have a null first argument. The separator string pointed to by s2 may be
different from call to call.
-[<a name="#p367" href="p367">page 367</a>] (<a href="#Contents">Contents</a>)
+[<a name="p367" href="#p367">page 367</a>] (<a href="#Contents">Contents</a>)
3 The first call in the sequence searches the string pointed to by s1 for the first character
that is not contained in the current separator string pointed to by s2. If no such character
-[<a name="#p368" href="p368">page 368</a>] (<a href="#Contents">Contents</a>)
+[<a name="p368" href="#p368">page 368</a>] (<a href="#Contents">Contents</a>)
<a name="7.23.6.2" href="#7.23.6.2"><b> 7.23.6.2 The strerror function</b></a>
Synopsis
-[<a name="#p369" href="p369">page 369</a>] (<a href="#Contents">Contents</a>)
+[<a name="p369" href="#p369">page 369</a>] (<a href="#Contents">Contents</a>)
<a name="7.24" href="#7.24"><b> 7.24 Type-generic math <tgmath.h></b></a>
1 The header <a href="#7.24"><tgmath.h></a> includes the headers <a href="#7.12"><math.h></a> and <a href="#7.3"><complex.h></a> and
305) If the type of the argument is not compatible with the type of the parameter for the selected function,
the behavior is undefined.
-[<a name="#p370" href="p370">page 370</a>] (<a href="#Contents">Contents</a>)
+[<a name="p370" href="#p370">page 370</a>] (<a href="#Contents">Contents</a>)
<a href="#7.12"><math.h></a> <a href="#7.3"><complex.h></a> type-generic
function function macro
-[<a name="#p371" href="p371">page 371</a>] (<a href="#Contents">Contents</a>)
+[<a name="p371" href="#p371">page 371</a>] (<a href="#Contents">Contents</a>)
6 For each unsuffixed function in <a href="#7.3"><complex.h></a> that is not a c-prefixed counterpart to a
function in <a href="#7.12"><math.h></a>, the corresponding type-generic macro has the same name as the
-[<a name="#p372" href="p372">page 372</a>] (<a href="#Contents">Contents</a>)
+[<a name="p372" href="#p372">page 372</a>] (<a href="#Contents">Contents</a>)
<a name="7.25" href="#7.25"><b> 7.25 Threads <threads.h></b></a>
<a name="7.25.1" href="#7.25.1"><b> 7.25.1 Introduction</b></a>
which is a complete object type that holds a flag for use by call_once; and
-[<a name="#p373" href="p373">page 373</a>] (<a href="#Contents">Contents</a>)
+[<a name="p373" href="#p373">page 373</a>] (<a href="#Contents">Contents</a>)
xtime
which is a structure type that holds a time specified in seconds and nanoseconds. The
-[<a name="#p374" href="p374">page 374</a>] (<a href="#Contents">Contents</a>)
+[<a name="p374" href="#p374">page 374</a>] (<a href="#Contents">Contents</a>)
<a name="7.25.2" href="#7.25.2"><b> 7.25.2 Initialization functions</b></a>
<a name="7.25.2.1" href="#7.25.2.1"><b> 7.25.2.1 The call_once function</b></a>
pointed to by cond. The cnd_destroy function requires that no threads be blocked
waiting for the condition variable pointed to by cond.
-[<a name="#p375" href="p375">page 375</a>] (<a href="#Contents">Contents</a>)
+[<a name="p375" href="#p375">page 375</a>] (<a href="#Contents">Contents</a>)
Returns
3 The cnd_destroy function returns no value.
-[<a name="#p376" href="p376">page 376</a>] (<a href="#Contents">Contents</a>)
+[<a name="p376" href="#p376">page 376</a>] (<a href="#Contents">Contents</a>)
Description
2 The cnd_timedwait function atomically unlocks the mutex pointed to by mtx and
-[<a name="#p377" href="p377">page 377</a>] (<a href="#Contents">Contents</a>)
+[<a name="p377" href="#p377">page 377</a>] (<a href="#Contents">Contents</a>)
Returns
3 The mtx_destroy function returns no value.
-[<a name="#p378" href="p378">page 378</a>] (<a href="#Contents">Contents</a>)
+[<a name="p378" href="#p378">page 378</a>] (<a href="#Contents">Contents</a>)
<a name="7.25.4.4" href="#7.25.4.4"><b> 7.25.4.4 The mtx_timedlock function</b></a>
Synopsis
2 The mtx_unlock function unlocks the mutex pointed to by mtx. The mutex pointed to
by mtx shall be locked by the calling thread.
-[<a name="#p379" href="p379">page 379</a>] (<a href="#Contents">Contents</a>)
+[<a name="p379" href="#p379">page 379</a>] (<a href="#Contents">Contents</a>)
Returns
3 The mtx_unlock function returns thrd_success on success or thrd_error if
-[<a name="#p380" href="p380">page 380</a>] (<a href="#Contents">Contents</a>)
+[<a name="p380" href="#p380">page 380</a>] (<a href="#Contents">Contents</a>)
Description
2 The thrd_detach function tells the operating system to dispose of any resources
2 The thrd_join function joins the thread identified by thr with the current thread by
blocking until the other thread has terminated. If the parameter res is not a null pointer,
-[<a name="#p381" href="p381">page 381</a>] (<a href="#Contents">Contents</a>)
+[<a name="p381" href="#p381">page 381</a>] (<a href="#Contents">Contents</a>)
it stores the thread's result code in the integer pointed to by res. The termination of the
other thread synchronizes with the completion of the thrd_join function. The thread
dtor, which may be null.
-[<a name="#p382" href="p382">page 382</a>] (<a href="#Contents">Contents</a>)
+[<a name="p382" href="#p382">page 382</a>] (<a href="#Contents">Contents</a>)
Returns
3 If the tss_create function is successful, it sets the thread-specific storage pointed to
-[<a name="#p383" href="p383">page 383</a>] (<a href="#Contents">Contents</a>)
+[<a name="p383" href="#p383">page 383</a>] (<a href="#Contents">Contents</a>)
Returns
3 The tss_set function returns thrd_success on success or thrd_error if the
306) Although an xtime object describes times with nanosecond resolution, the actual resolution in an
xtime object is system dependent.
-[<a name="#p384" href="p384">page 384</a>] (<a href="#Contents">Contents</a>)
+[<a name="p384" href="#p384">page 384</a>] (<a href="#Contents">Contents</a>)
<a name="7.26" href="#7.26"><b> 7.26 Date and time <time.h></b></a>
<a name="7.26.1" href="#7.26.1"><b> 7.26.1 Components of time</b></a>
307) The range [0, 60] for tm_sec allows for a positive leap second.
-[<a name="#p385" href="p385">page 385</a>] (<a href="#Contents">Contents</a>)
+[<a name="p385" href="#p385">page 385</a>] (<a href="#Contents">Contents</a>)
The value of tm_isdst is positive if Daylight Saving Time is in effect, zero if Daylight
Saving Time is not in effect, and negative if the information is not available.
308) In order to measure the time spent in a program, the clock function should be called at the start of
the program and its return value subtracted from the value returned by subsequent calls.
-[<a name="#p386" href="p386">page 386</a>] (<a href="#Contents">Contents</a>)
+[<a name="p386" href="#p386">page 386</a>] (<a href="#Contents">Contents</a>)
<a name="7.26.2.3" href="#7.26.2.3"><b> 7.26.2.3 The mktime function</b></a>
Synopsis
Daylight Saving Time, respectively, is or is not in effect for the specified time. A negative value
causes it to attempt to determine whether Daylight Saving Time is in effect for the specified time.
-[<a name="#p387" href="p387">page 387</a>] (<a href="#Contents">Contents</a>)
+[<a name="p387" href="#p387">page 387</a>] (<a href="#Contents">Contents</a>)
time_str.tm_year = 2001 - 1900;
time_str.tm_mon = 7 - 1;
timeptr into a string in the form
Sun Sep 16 01:03:52 1973\n\0
-[<a name="#p388" href="p388">page 388</a>] (<a href="#Contents">Contents</a>)
+[<a name="p388" href="#p388">page 388</a>] (<a href="#Contents">Contents</a>)
using the equivalent of the following algorithm.
char *asctime(const struct tm *timeptr)
310) See <a href="#7.26.1">7.26.1</a>.
-[<a name="#p389" href="p389">page 389</a>] (<a href="#Contents">Contents</a>)
+[<a name="p389" href="#p389">page 389</a>] (<a href="#Contents">Contents</a>)
Returns
3 The ctime function returns the pointer returned by the asctime function with that
-[<a name="#p390" href="p390">page 390</a>] (<a href="#Contents">Contents</a>)
+[<a name="p390" href="#p390">page 390</a>] (<a href="#Contents">Contents</a>)
Description
2 The strftime function places characters into the array pointed to by s as controlled by
%M is replaced by the minute as a decimal number (00-59). [tm_min]
%n is replaced by a new-line character.
-[<a name="#p391" href="p391">page 391</a>] (<a href="#Contents">Contents</a>)
+[<a name="p391" href="#p391">page 391</a>] (<a href="#Contents">Contents</a>)
%p is replaced by the locale's equivalent of the AM/PM designations associated with a
12-hour clock. [tm_hour]
representation.
%EY is replaced by the locale's full alternative year representation.
-[<a name="#p392" href="p392">page 392</a>] (<a href="#Contents">Contents</a>)
+[<a name="p392" href="#p392">page 392</a>] (<a href="#Contents">Contents</a>)
%Od is replaced by the day of the month, using the locale's alternative numeric symbols
(filled as needed with leading zeros, or with leading spaces if there is no alternative
%b the first three characters of %B.
%B one of ''January'', ''February'', ... , ''December''.
%c equivalent to ''%a %b %e %T %Y''.
-[<a name="#p393" href="p393">page 393</a>] (<a href="#Contents">Contents</a>)
+[<a name="p393" href="#p393">page 393</a>] (<a href="#Contents">Contents</a>)
%p one of ''AM'' or ''PM''.
%r equivalent to ''%I:%M:%S %p''.
-[<a name="#p394" href="p394">page 394</a>] (<a href="#Contents">Contents</a>)
+[<a name="p394" href="#p394">page 394</a>] (<a href="#Contents">Contents</a>)
<a name="7.27" href="#7.27"><b> 7.27 Unicode utilities <uchar.h></b></a>
1 The header <a href="#7.27"><uchar.h></a> declares types and functions for manipulating Unicode
next multibyte character is complete and valid, it determines the values of the
corresponding wide characters and then, if pc16 is not a null pointer, stores the value of
the first (or only) such character in the object pointed to by pc16. Subsequent calls will
-[<a name="#p395" href="p395">page 395</a>] (<a href="#Contents">Contents</a>)
+[<a name="p395" href="#p395">page 395</a>] (<a href="#Contents">Contents</a>)
store successive wide characters without consuming any additional input until all the
characters have been stored. If the corresponding wide character is the null wide
311) When n has at least the value of the MB_CUR_MAX macro, this case can only occur if s points at a
sequence of redundant shift sequences (for implementations with state-dependent encodings).
-[<a name="#p396" href="p396">page 396</a>] (<a href="#Contents">Contents</a>)
+[<a name="p396" href="#p396">page 396</a>] (<a href="#Contents">Contents</a>)
array whose first element is pointed to by s. At most MB_CUR_MAX bytes are stored. If
c16 is a null wide character, a null byte is stored, preceded by any shift sequence needed
of bytes that complete the multibyte character.
-[<a name="#p397" href="p397">page 397</a>] (<a href="#Contents">Contents</a>)
+[<a name="p397" href="#p397">page 397</a>] (<a href="#Contents">Contents</a>)
(size_t)(-3) if the next character resulting from a previous call has been stored (no
bytes from the input have been consumed by this call).
312) When n has at least the value of the MB_CUR_MAX macro, this case can only occur if s points at a
sequence of redundant shift sequences (for implementations with state-dependent encodings).
-[<a name="#p398" href="p398">page 398</a>] (<a href="#Contents">Contents</a>)
+[<a name="p398" href="#p398">page 398</a>] (<a href="#Contents">Contents</a>)
<a name="7.28" href="#7.28"><b> 7.28 Extended multibyte and wide character utilities <wchar.h></b></a>
<a name="7.28.1" href="#7.28.1"><b> 7.28.1 Introduction</b></a>
314) wchar_t and wint_t can be the same integer type.
315) The value of the macro WEOF may differ from that of EOF and need not be negative.
-[<a name="#p399" href="p399">page 399</a>] (<a href="#Contents">Contents</a>)
+[<a name="p399" href="#p399">page 399</a>] (<a href="#Contents">Contents</a>)
-- Functions for wide string date and time conversion; and
-- Functions that provide extended capabilities for conversion between multibyte and
316) The fwprintf functions perform writes to memory for the %n specifier.
-[<a name="#p400" href="p400">page 400</a>] (<a href="#Contents">Contents</a>)
+[<a name="p400" href="#p400">page 400</a>] (<a href="#Contents">Contents</a>)
left adjustment flag, described later, has been given) to the field width. The field
width takes the form of an asterisk * (described later) or a nonnegative decimal
318) The results of all floating conversions of a negative zero, and of negative values that round to zero,
include a minus sign.
-[<a name="#p401" href="p401">page 401</a>] (<a href="#Contents">Contents</a>)
+[<a name="p401" href="#p401">page 401</a>] (<a href="#Contents">Contents</a>)
and G conversions, the result of converting a floating-point number always
contains a decimal-point wide character, even if no digits follow it. (Normally, a
an intmax_t or uintmax_t argument; or that a following n conversion
specifier applies to a pointer to an intmax_t argument.
-[<a name="#p402" href="p402">page 402</a>] (<a href="#Contents">Contents</a>)
+[<a name="p402" href="#p402">page 402</a>] (<a href="#Contents">Contents</a>)
z Specifies that a following d, i, o, u, x, or X conversion specifier applies to a
size_t or the corresponding signed integer type argument; or that a
any n-wchar-sequence, is implementation-defined. The F conversion
specifier produces INF, INFINITY, or NAN instead of inf, infinity, or
-[<a name="#p403" href="p403">page 403</a>] (<a href="#Contents">Contents</a>)
+[<a name="p403" href="#p403">page 403</a>] (<a href="#Contents">Contents</a>)
nan, respectively.319)
e,E A double argument representing a floating-point number is converted in the
320) Binary implementations can choose the hexadecimal digit to the left of the decimal-point wide
character so that subsequent digits align to nibble (4-bit) boundaries.
-[<a name="#p404" href="p404">page 404</a>] (<a href="#Contents">Contents</a>)
+[<a name="p404" href="#p404">page 404</a>] (<a href="#Contents">Contents</a>)
for an exact representation of the value; if the precision is missing and
FLT_RADIX is not a power of 2, then the precision is sufficient to
might suffice depending on the implementation's scheme for determining the digit to the left of the
decimal-point wide character.
-[<a name="#p405" href="p405">page 405</a>] (<a href="#Contents">Contents</a>)
+[<a name="p405" href="#p405">page 405</a>] (<a href="#Contents">Contents</a>)
defined manner.
n The argument shall be a pointer to signed integer into which is written the
given format specifier. The number of significant digits is determined by the format specifier, and in
the case of fixed-point conversion by the source value as well.
-[<a name="#p406" href="p406">page 406</a>] (<a href="#Contents">Contents</a>)
+[<a name="p406" href="#p406">page 406</a>] (<a href="#Contents">Contents</a>)
Environmental limits
15 The number of wide characters that can be produced by any single conversion shall be at
-[<a name="#p407" href="p407">page 407</a>] (<a href="#Contents">Contents</a>)
+[<a name="p407" href="#p407">page 407</a>] (<a href="#Contents">Contents</a>)
-- An optional length modifier that specifies the size of the receiving object.
-- A conversion specifier wide character that specifies the type of conversion to be
325) fwscanf pushes back at most one input wide character onto the input stream. Therefore, some
sequences that are acceptable to wcstod, wcstol, etc., are unacceptable to fwscanf.
-[<a name="#p408" href="p408">page 408</a>] (<a href="#Contents">Contents</a>)
+[<a name="p408" href="#p408">page 408</a>] (<a href="#Contents">Contents</a>)
object does not have an appropriate type, or if the result of the conversion cannot be
represented in the object, the behavior is undefined.
for the subject sequence of the wcstol function with the value 0 for the
base argument. The corresponding argument shall be a pointer to signed
-[<a name="#p409" href="p409">page 409</a>] (<a href="#Contents">Contents</a>)
+[<a name="p409" href="#p409">page 409</a>] (<a href="#Contents">Contents</a>)
integer.
o Matches an optionally signed octal integer, whose format is the same as
If an l length modifier is present, the corresponding argument shall be a
pointer to the initial element of an array of wchar_t large enough to accept
-[<a name="#p410" href="p410">page 410</a>] (<a href="#Contents">Contents</a>)
+[<a name="p410" href="#p410">page 410</a>] (<a href="#Contents">Contents</a>)
the sequence and the terminating null wide character, which will be added
automatically.
from the input stream so far by this call to the fwscanf function. Execution
of a %n directive does not increment the assignment count returned at the
completion of execution of the fwscanf function. No argument is
-[<a name="#p411" href="p411">page 411</a>] (<a href="#Contents">Contents</a>)
+[<a name="p411" href="#p411">page 411</a>] (<a href="#Contents">Contents</a>)
converted, but one is consumed. If the conversion specification includes an
assignment-suppressing wide character or a field width, the behavior is
326) See ''future library directions'' (<a href="#7.30.12">7.30.12</a>).
-[<a name="#p412" href="p412">page 412</a>] (<a href="#Contents">Contents</a>)
+[<a name="p412" href="#p412">page 412</a>] (<a href="#Contents">Contents</a>)
Forward references: the wcstod, wcstof, and wcstold functions (<a href="#7.28.4.1.1">7.28.4.1.1</a>), the
wcstol, wcstoll, wcstoul, and wcstoull functions (<a href="#7.28.4.1.2">7.28.4.1.2</a>), the wcrtomb
-[<a name="#p413" href="p413">page 413</a>] (<a href="#Contents">Contents</a>)
+[<a name="p413" href="#p413">page 413</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.2.5" href="#7.28.2.5"><b> 7.28.2.5 The vfwprintf function</b></a>
Synopsis
327) As the functions vfwprintf, vswprintf, vfwscanf, vwprintf, vwscanf, and vswscanf
invoke the va_arg macro, the value of arg after the return is indeterminate.
-[<a name="#p414" href="p414">page 414</a>] (<a href="#Contents">Contents</a>)
+[<a name="p414" href="#p414">page 414</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.2.6" href="#7.28.2.6"><b> 7.28.2.6 The vfwscanf function</b></a>
Synopsis
occurred or if n or more wide characters were requested to be generated.
-[<a name="#p415" href="p415">page 415</a>] (<a href="#Contents">Contents</a>)
+[<a name="p415" href="#p415">page 415</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.2.8" href="#7.28.2.8"><b> 7.28.2.8 The vswscanf function</b></a>
Synopsis
-[<a name="#p416" href="p416">page 416</a>] (<a href="#Contents">Contents</a>)
+[<a name="p416" href="#p416">page 416</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.2.10" href="#7.28.2.10"><b> 7.28.2.10 The vwscanf function</b></a>
Synopsis
before the arguments to wscanf.
-[<a name="#p417" href="p417">page 417</a>] (<a href="#Contents">Contents</a>)
+[<a name="p417" href="#p417">page 417</a>] (<a href="#Contents">Contents</a>)
Returns
3 The wscanf function returns the value of the macro EOF if an input failure occurs
328) An end-of-file and a read error can be distinguished by use of the feof and ferror functions.
Also, errno will be set to EILSEQ by input/output functions only if an encoding error occurs.
-[<a name="#p418" href="p418">page 418</a>] (<a href="#Contents">Contents</a>)
+[<a name="p418" href="#p418">page 418</a>] (<a href="#Contents">Contents</a>)
additional wide characters are read after a new-line wide character (which is retained) or
after end-of-file. A null wide character is written immediately after the last wide
3 The fputws function returns EOF if a write or encoding error occurs; otherwise, it
returns a nonnegative value.
-[<a name="#p419" href="p419">page 419</a>] (<a href="#Contents">Contents</a>)
+[<a name="p419" href="#p419">page 419</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.3.5" href="#7.28.3.5"><b> 7.28.3.5 The fwide function</b></a>
Synopsis
329) If the orientation of the stream has already been determined, fwide does not change it.
-[<a name="#p420" href="p420">page 420</a>] (<a href="#Contents">Contents</a>)
+[<a name="p420" href="#p420">page 420</a>] (<a href="#Contents">Contents</a>)
Description
2 The getwchar function is equivalent to getwc with the argument stdin.
stream pointed to by stream. Pushed-back wide characters will be returned by
subsequent reads on that stream in the reverse order of their pushing. A successful
-[<a name="#p421" href="p421">page 421</a>] (<a href="#Contents">Contents</a>)
+[<a name="p421" href="#p421">page 421</a>] (<a href="#Contents">Contents</a>)
intervening call (with the stream pointed to by stream) to a file positioning function
(fseek, fsetpos, or rewind) discards any pushed-back wide characters for the
-[<a name="#p422" href="p422">page 422</a>] (<a href="#Contents">Contents</a>)
+[<a name="p422" href="#p422">page 422</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.4.1" href="#7.28.4.1"><b> 7.28.4.1 Wide string numeric conversion functions</b></a>
<a name="7.28.4.1.1" href="#7.28.4.1.1"><b> 7.28.4.1.1 The wcstod, wcstof, and wcstold functions</b></a>
n-wchar-sequence nondigit
The subject sequence is defined as the longest initial subsequence of the input wide
string, starting with the first non-white-space wide character, that is of the expected form.
-[<a name="#p423" href="p423">page 423</a>] (<a href="#Contents">Contents</a>)
+[<a name="p423" href="#p423">page 423</a>] (<a href="#Contents">Contents</a>)
The subject sequence contains no wide characters if the input wide string is not of the
expected form.
331) An implementation may use the n-wchar sequence to determine extra information to be represented in
the NaN's significand.
-[<a name="#p424" href="p424">page 424</a>] (<a href="#Contents">Contents</a>)
+[<a name="p424" href="#p424">page 424</a>] (<a href="#Contents">Contents</a>)
9 If the subject sequence has the decimal form and at most DECIMAL_DIG (defined in
<a href="#7.7"><float.h></a>) significant digits, the result should be correctly rounded. If the subject
332) DECIMAL_DIG, defined in <a href="#7.7"><float.h></a>, 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.
-[<a name="#p425" href="p425">page 425</a>] (<a href="#Contents">Contents</a>)
+[<a name="p425" href="#p425">page 425</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.4.1.2" href="#7.28.4.1.2"><b> 7.28.4.1.2 The wcstol, wcstoll, wcstoul, and wcstoull functions</b></a>
Synopsis
value of base is 16, the wide characters 0x or 0X may optionally precede the sequence
of letters and digits, following the sign if present.
-[<a name="#p426" href="p426">page 426</a>] (<a href="#Contents">Contents</a>)
+[<a name="p426" href="#p426">page 426</a>] (<a href="#Contents">Contents</a>)
4 The subject sequence is defined as the longest initial subsequence of the input wide
string, starting with the first non-white-space wide character, that is of the expected form.
3 The wcscpy function returns the value of s1.
-[<a name="#p427" href="p427">page 427</a>] (<a href="#Contents">Contents</a>)
+[<a name="p427" href="#p427">page 427</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.4.2.2" href="#7.28.4.2.2"><b> 7.28.4.2.2 The wcsncpy function</b></a>
Synopsis
333) Thus, if there is no null wide character in the first n wide characters of the array pointed to by s2, the
result will not be null-terminated.
-[<a name="#p428" href="p428">page 428</a>] (<a href="#Contents">Contents</a>)
+[<a name="p428" href="#p428">page 428</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.4.2.4" href="#7.28.4.2.4"><b> 7.28.4.2.4 The wmemmove function</b></a>
Synopsis
2 The wcsncat function appends not more than n wide characters (a null wide character
and those that follow it are not appended) from the array pointed to by s2 to the end of
-[<a name="#p429" href="p429">page 429</a>] (<a href="#Contents">Contents</a>)
+[<a name="p429" href="#p429">page 429</a>] (<a href="#Contents">Contents</a>)
the wide string pointed to by s1. The initial wide character of s2 overwrites the null
wide character at the end of s1. A terminating null wide character is always appended to
334) Thus, the maximum number of wide characters that can end up in the array pointed to by s1 is
wcslen(s1)+n+1.
-[<a name="#p430" href="p430">page 430</a>] (<a href="#Contents">Contents</a>)
+[<a name="p430" href="#p430">page 430</a>] (<a href="#Contents">Contents</a>)
wide string pointed to by s2 when both are interpreted as appropriate to the current
locale.
transformation of the wide string pointed to by s:
-[<a name="#p431" href="p431">page 431</a>] (<a href="#Contents">Contents</a>)
+[<a name="p431" href="#p431">page 431</a>] (<a href="#Contents">Contents</a>)
1 + wcsxfrm(NULL, s, 0)
-[<a name="#p432" href="p432">page 432</a>] (<a href="#Contents">Contents</a>)
+[<a name="p432" href="#p432">page 432</a>] (<a href="#Contents">Contents</a>)
Returns
3 The wcscspn function returns the length of the segment.
3 The wcsspn function returns the length of the segment.
-[<a name="#p433" href="p433">page 433</a>] (<a href="#Contents">Contents</a>)
+[<a name="p433" href="#p433">page 433</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.4.5.6" href="#7.28.4.5.6"><b> 7.28.4.5.6 The wcsstr function</b></a>
Synopsis
the start of the first token.
5 The wcstok function then searches from there for a wide character that is contained in
the current separator wide string. If no such wide character is found, the current token
-[<a name="#p434" href="p434">page 434</a>] (<a href="#Contents">Contents</a>)
+[<a name="p434" href="#p434">page 434</a>] (<a href="#Contents">Contents</a>)
extends to the end of the wide string pointed to by s1, and subsequent searches in the
same wide string for a token return a null pointer. If such a wide character is found, it is
-[<a name="#p435" href="p435">page 435</a>] (<a href="#Contents">Contents</a>)
+[<a name="p435" href="#p435">page 435</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.4.6" href="#7.28.4.6"><b> 7.28.4.6 Miscellaneous functions</b></a>
<a name="7.28.4.6.1" href="#7.28.4.6.1"><b> 7.28.4.6.1 The wcslen function</b></a>
the generated output is to be placed.
-[<a name="#p436" href="p436">page 436</a>] (<a href="#Contents">Contents</a>)
+[<a name="p436" href="#p436">page 436</a>] (<a href="#Contents">Contents</a>)
-- The argument maxsize indicates the limiting number of wide characters.
-- The argument format is a wide string and the conversion specifiers are replaced by
mbsrtowcs functions as long as they are used to step sequentially through the same multibyte
character string.
-[<a name="#p437" href="p437">page 437</a>] (<a href="#Contents">Contents</a>)
+[<a name="p437" href="#p437">page 437</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.6.1" href="#7.28.6.1"><b> 7.28.6.1 Single-byte/wide character conversion functions</b></a>
<a name="7.28.6.1.1" href="#7.28.6.1.1"><b> 7.28.6.1.1 The btowc function</b></a>
-[<a name="#p438" href="p438">page 438</a>] (<a href="#Contents">Contents</a>)
+[<a name="p438" href="#p438">page 438</a>] (<a href="#Contents">Contents</a>)
Returns
3 The mbsinit function returns nonzero if ps is a null pointer or if the referenced object
-[<a name="#p439" href="p439">page 439</a>] (<a href="#Contents">Contents</a>)
+[<a name="p439" href="#p439">page 439</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.6.3.2" href="#7.28.6.3.2"><b> 7.28.6.3.2 The mbrtowc function</b></a>
Synopsis
336) When n has at least the value of the MB_CUR_MAX macro, this case can only occur if s points at a
sequence of redundant shift sequences (for implementations with state-dependent encodings).
-[<a name="#p440" href="p440">page 440</a>] (<a href="#Contents">Contents</a>)
+[<a name="p440" href="#p440">page 440</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.6.3.3" href="#7.28.6.3.3"><b> 7.28.6.3.3 The wcrtomb function</b></a>
Synopsis
-[<a name="#p441" href="p441">page 441</a>] (<a href="#Contents">Contents</a>)
+[<a name="p441" href="#p441">page 441</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.6.4.1" href="#7.28.6.4.1"><b> 7.28.6.4.1 The mbsrtowcs function</b></a>
Synopsis
337) Thus, the value of len is ignored if dst is a null pointer.
-[<a name="#p442" href="p442">page 442</a>] (<a href="#Contents">Contents</a>)
+[<a name="p442" href="#p442">page 442</a>] (<a href="#Contents">Contents</a>)
<a name="7.28.6.4.2" href="#7.28.6.4.2"><b> 7.28.6.4.2 The wcsrtombs function</b></a>
Synopsis
338) If conversion stops because a terminating null wide character has been reached, the bytes stored
include those necessary to reach the initial shift state immediately before the null byte.
-[<a name="#p443" href="p443">page 443</a>] (<a href="#Contents">Contents</a>)
+[<a name="p443" href="#p443">page 443</a>] (<a href="#Contents">Contents</a>)
<a name="7.29" href="#7.29"><b> 7.29 Wide character classification and mapping utilities <wctype.h></b></a>
<a name="7.29.1" href="#7.29.1"><b> 7.29.1 Introduction</b></a>
339) See ''future library directions'' (<a href="#7.30.13">7.30.13</a>).
-[<a name="#p444" href="p444">page 444</a>] (<a href="#Contents">Contents</a>)
+[<a name="p444" href="#p444">page 444</a>] (<a href="#Contents">Contents</a>)
<a name="7.29.2" href="#7.29.2"><b> 7.29.2 Wide character classification utilities</b></a>
1 The header <a href="#7.29"><wctype.h></a> declares several functions useful for classifying wide
(which cannot occur for wc == L' ' of course), then either iswgraph(wc) or iswprint(wc)
&& iswspace(wc) is true, but not both.
-[<a name="#p445" href="p445">page 445</a>] (<a href="#Contents">Contents</a>)
+[<a name="p445" href="#p445">page 445</a>] (<a href="#Contents">Contents</a>)
wide characters for which none of iswcntrl, iswdigit, iswpunct, or iswspace
is true.341)
341) The functions iswlower and iswupper test true or false separately for each of these additional
wide characters; all four combinations are possible.
-[<a name="#p446" href="p446">page 446</a>] (<a href="#Contents">Contents</a>)
+[<a name="p446" href="#p446">page 446</a>] (<a href="#Contents">Contents</a>)
Description
2 The iswgraph function tests for any wide character for which iswprint is true and
corresponding functions in <a href="#7.4.1">7.4.1</a> with respect to printing, white-space, single-byte execution
characters other than ' '.
-[<a name="#p447" href="p447">page 447</a>] (<a href="#Contents">Contents</a>)
+[<a name="p447" href="#p447">page 447</a>] (<a href="#Contents">Contents</a>)
Description
2 The iswspace function tests for any wide character that corresponds to a locale-specific
character classification function (<a href="#7.29.2.1">7.29.2.1</a>) in the comment that follows the expression:
-[<a name="#p448" href="p448">page 448</a>] (<a href="#Contents">Contents</a>)
+[<a name="p448" href="#p448">page 448</a>] (<a href="#Contents">Contents</a>)
iswctype(wc, wctype("alnum")) // iswalnum(wc)
iswctype(wc, wctype("alpha")) // iswalpha(wc)
-[<a name="#p449" href="p449">page 449</a>] (<a href="#Contents">Contents</a>)
+[<a name="p449" href="#p449">page 449</a>] (<a href="#Contents">Contents</a>)
<a name="7.29.3" href="#7.29.3"><b> 7.29.3 Wide character case mapping utilities</b></a>
1 The header <a href="#7.29"><wctype.h></a> declares several functions useful for mapping wide characters.
-[<a name="#p450" href="p450">page 450</a>] (<a href="#Contents">Contents</a>)
+[<a name="p450" href="#p450">page 450</a>] (<a href="#Contents">Contents</a>)
<a name="7.29.3.2.1" href="#7.29.3.2.1"><b> 7.29.3.2.1 The towctrans function</b></a>
Synopsis
-[<a name="#p451" href="p451">page 451</a>] (<a href="#Contents">Contents</a>)
+[<a name="p451" href="#p451">page 451</a>] (<a href="#Contents">Contents</a>)
<a name="7.30" href="#7.30"><b> 7.30 Future library directions</b></a>
1 The following names are grouped under individual headers for convenience. All external
and ending with _MAX, _MIN, or _C may be added to the macros defined in the
<a href="#7.20"><stdint.h></a> header.
-[<a name="#p452" href="p452">page 452</a>] (<a href="#Contents">Contents</a>)
+[<a name="p452" href="#p452">page 452</a>] (<a href="#Contents">Contents</a>)
<a name="7.30.9" href="#7.30.9"><b> 7.30.9 Input/output <stdio.h></b></a>
1 Lowercase letters may be added to the conversion specifiers and length modifiers in
-[<a name="#p453" href="p453">page 453</a>] (<a href="#Contents">Contents</a>)
+[<a name="p453" href="#p453">page 453</a>] (<a href="#Contents">Contents</a>)
<a name="A" href="#A"><b> Annex A</b></a>
(informative)
-[<a name="#p454" href="p454">page 454</a>] (<a href="#Contents">Contents</a>)
+[<a name="p454" href="#p454">page 454</a>] (<a href="#Contents">Contents</a>)
<a name="A.1.2" href="#A.1.2"><b>A.1.2 Keywords</b></a>
(<a href="#6.4.1">6.4.1</a>) keyword: one of
-[<a name="#p455" href="p455">page 455</a>] (<a href="#Contents">Contents</a>)
+[<a name="p455" href="#p455">page 455</a>] (<a href="#Contents">Contents</a>)
<a name="A.1.4" href="#A.1.4"><b>A.1.4 Universal character names</b></a>
(<a href="#6.4.3">6.4.3</a>) universal-character-name:
-[<a name="#p456" href="p456">page 456</a>] (<a href="#Contents">Contents</a>)
+[<a name="p456" href="#p456">page 456</a>] (<a href="#Contents">Contents</a>)
(<a href="#6.4.4.1">6.4.4.1</a>) hexadecimal-digit: one of
0 1 2 3 4 5 6 7 8 9
-[<a name="#p457" href="p457">page 457</a>] (<a href="#Contents">Contents</a>)
+[<a name="p457" href="#p457">page 457</a>] (<a href="#Contents">Contents</a>)
(<a href="#6.4.4.2">6.4.4.2</a>) digit-sequence:
digit
-[<a name="#p458" href="p458">page 458</a>] (<a href="#Contents">Contents</a>)
+[<a name="p458" href="#p458">page 458</a>] (<a href="#Contents">Contents</a>)
(<a href="#6.4.4.4">6.4.4.4</a>) simple-escape-sequence: one of
\' \" \? \\
-[<a name="#p459" href="p459">page 459</a>] (<a href="#Contents">Contents</a>)
+[<a name="p459" href="#p459">page 459</a>] (<a href="#Contents">Contents</a>)
<a name="A.1.8" href="#A.1.8"><b>A.1.8 Header names</b></a>
(<a href="#6.4.7">6.4.7</a>) header-name:
-[<a name="#p460" href="p460">page 460</a>] (<a href="#Contents">Contents</a>)
+[<a name="p460" href="#p460">page 460</a>] (<a href="#Contents">Contents</a>)
<a name="A.2" href="#A.2"><b>A.2 Phrase structure grammar</b></a>
<a name="A.2.1" href="#A.2.1"><b>A.2.1 Expressions</b></a>
sizeof ( type-name )
alignof ( type-name )
-[<a name="#p461" href="p461">page 461</a>] (<a href="#Contents">Contents</a>)
+[<a name="p461" href="#p461">page 461</a>] (<a href="#Contents">Contents</a>)
(<a href="#6.5.3">6.5.3</a>) unary-operator: one of
& * + - ~ !
-[<a name="#p462" href="p462">page 462</a>] (<a href="#Contents">Contents</a>)
+[<a name="p462" href="#p462">page 462</a>] (<a href="#Contents">Contents</a>)
(<a href="#6.5.12">6.5.12</a>) inclusive-OR-expression:
exclusive-OR-expression
init-declarator-list , init-declarator
-[<a name="#p463" href="p463">page 463</a>] (<a href="#Contents">Contents</a>)
+[<a name="p463" href="#p463">page 463</a>] (<a href="#Contents">Contents</a>)
(<a href="#6.7">6.7</a>) init-declarator:
declarator
specifier-qualifier-list struct-declarator-listopt ;
static_assert-declaration
-[<a name="#p464" href="p464">page 464</a>] (<a href="#Contents">Contents</a>)
+[<a name="p464" href="#p464">page 464</a>] (<a href="#Contents">Contents</a>)
(<a href="#6.7.2.1">6.7.2.1</a>) specifier-qualifier-list:
type-specifier specifier-qualifier-listopt
-[<a name="#p465" href="p465">page 465</a>] (<a href="#Contents">Contents</a>)
+[<a name="p465" href="#p465">page 465</a>] (<a href="#Contents">Contents</a>)
(<a href="#6.7.6">6.7.6</a>) direct-declarator:
identifier
-[<a name="#p466" href="p466">page 466</a>] (<a href="#Contents">Contents</a>)
+[<a name="p466" href="#p466">page 466</a>] (<a href="#Contents">Contents</a>)
(<a href="#6.7.7">6.7.7</a>) direct-abstract-declarator:
( abstract-declarator )
-[<a name="#p467" href="p467">page 467</a>] (<a href="#Contents">Contents</a>)
+[<a name="p467" href="#p467">page 467</a>] (<a href="#Contents">Contents</a>)
<a name="A.2.3" href="#A.2.3"><b>A.2.3 Statements</b></a>
(<a href="#6.8">6.8</a>) statement:
break ;
return expressionopt ;
-[<a name="#p468" href="p468">page 468</a>] (<a href="#Contents">Contents</a>)
+[<a name="p468" href="#p468">page 468</a>] (<a href="#Contents">Contents</a>)
<a name="A.2.4" href="#A.2.4"><b>A.2.4 External definitions</b></a>
(<a href="#6.9">6.9</a>) translation-unit:
# elif constant-expression new-line groupopt
-[<a name="#p469" href="p469">page 469</a>] (<a href="#Contents">Contents</a>)
+[<a name="p469" href="#p469">page 469</a>] (<a href="#Contents">Contents</a>)
(<a href="#6.10">6.10</a>) else-group:
# else new-line groupopt
-[<a name="#p470" href="p470">page 470</a>] (<a href="#Contents">Contents</a>)
+[<a name="p470" href="#p470">page 470</a>] (<a href="#Contents">Contents</a>)
<a name="B" href="#B"><b> Annex B</b></a>
(informative)
float complex casinhf(float complex z);
long double complex casinhl(long double complex z);
-[<a name="#p471" href="p471">page 471</a>] (<a href="#Contents">Contents</a>)
+[<a name="p471" href="#p471">page 471</a>] (<a href="#Contents">Contents</a>)
double complex catanh(double complex z);
float complex catanhf(float complex z);
long double complex conjl(long double complex z);
double complex cproj(double complex z);
-[<a name="#p472" href="p472">page 472</a>] (<a href="#Contents">Contents</a>)
+[<a name="p472" href="#p472">page 472</a>] (<a href="#Contents">Contents</a>)
float complex cprojf(float complex z);
long double complex cprojl(long double complex z);
int excepts);
int fetestexcept(int excepts);
-[<a name="#p473" href="p473">page 473</a>] (<a href="#Contents">Contents</a>)
+[<a name="p473" href="#p473">page 473</a>] (<a href="#Contents">Contents</a>)
int fegetround(void);
int fesetround(int round);
intmax_t strtoimax(const char * restrict nptr,
char ** restrict endptr, int base);
-[<a name="#p474" href="p474">page 474</a>] (<a href="#Contents">Contents</a>)
+[<a name="p474" href="#p474">page 474</a>] (<a href="#Contents">Contents</a>)
uintmax_t strtoumax(const char * restrict nptr,
char ** restrict endptr, int base);
int isnan(real-floating x);
int isnormal(real-floating x);
int signbit(real-floating x);
-[<a name="#p475" href="p475">page 475</a>] (<a href="#Contents">Contents</a>)
+[<a name="p475" href="#p475">page 475</a>] (<a href="#Contents">Contents</a>)
double acos(double x);
float acosf(float x);
double exp(double x);
float expf(float x);
-[<a name="#p476" href="p476">page 476</a>] (<a href="#Contents">Contents</a>)
+[<a name="p476" href="#p476">page 476</a>] (<a href="#Contents">Contents</a>)
long double expl(long double x);
double exp2(double x);
long double scalblnl(long double x, long int n);
double cbrt(double x);
-[<a name="#p477" href="p477">page 477</a>] (<a href="#Contents">Contents</a>)
+[<a name="p477" href="#p477">page 477</a>] (<a href="#Contents">Contents</a>)
float cbrtf(float x);
long double cbrtl(long double x);
long int lrintf(float x);
long int lrintl(long double x);
-[<a name="#p478" href="p478">page 478</a>] (<a href="#Contents">Contents</a>)
+[<a name="p478" href="#p478">page 478</a>] (<a href="#Contents">Contents</a>)
long long int llrint(double x);
long long int llrintf(float x);
long double fdiml(long double x, long double y);
double fmax(double x, double y);
-[<a name="#p479" href="p479">page 479</a>] (<a href="#Contents">Contents</a>)
+[<a name="p479" href="#p479">page 479</a>] (<a href="#Contents">Contents</a>)
float fmaxf(float x, float y);
long double fmaxl(long double x, long double y);
-[<a name="#p480" href="p480">page 480</a>] (<a href="#Contents">Contents</a>)
+[<a name="p480" href="#p480">page 480</a>] (<a href="#Contents">Contents</a>)
<a name="B.14" href="#B.14"><b>B.14 Alignment <stdalign.h></b></a>
alignas
-[<a name="#p481" href="p481">page 481</a>] (<a href="#Contents">Contents</a>)
+[<a name="p481" href="#p481">page 481</a>] (<a href="#Contents">Contents</a>)
atomic_size_t atomic_intmax_t
atomic_ptrdiff_t atomic_uintmax_t
-[<a name="#p482" href="p482">page 482</a>] (<a href="#Contents">Contents</a>)
+[<a name="p482" href="#p482">page 482</a>] (<a href="#Contents">Contents</a>)
<a name="B.17" href="#B.17"><b>B.17 Boolean type and values <stdbool.h></b></a>
bool
-[<a name="#p483" href="p483">page 483</a>] (<a href="#Contents">Contents</a>)
+[<a name="p483" href="#p483">page 483</a>] (<a href="#Contents">Contents</a>)
<a name="B.20" href="#B.20"><b>B.20 Input/output <stdio.h></b></a>
size_t _IOLBF FILENAME_MAX TMP_MAX
int vprintf(const char * restrict format, va_list arg);
int vscanf(const char * restrict format, va_list arg);
-[<a name="#p484" href="p484">page 484</a>] (<a href="#Contents">Contents</a>)
+[<a name="p484" href="#p484">page 484</a>] (<a href="#Contents">Contents</a>)
int vsnprintf(char * restrict s, size_t n,
const char * restrict format, va_list arg);
-[<a name="#p485" href="p485">page 485</a>] (<a href="#Contents">Contents</a>)
+[<a name="p485" href="#p485">page 485</a>] (<a href="#Contents">Contents</a>)
errno_t fopen_s(FILE * restrict * restrict streamptr,
const char * restrict filename,
-[<a name="#p486" href="p486">page 486</a>] (<a href="#Contents">Contents</a>)
+[<a name="p486" href="#p486">page 486</a>] (<a href="#Contents">Contents</a>)
<a name="B.21" href="#B.21"><b>B.21 General utilities <stdlib.h></b></a>
size_t ldiv_t EXIT_FAILURE MB_CUR_MAX
int system(const char *string);
-[<a name="#p487" href="p487">page 487</a>] (<a href="#Contents">Contents</a>)
+[<a name="p487" href="#p487">page 487</a>] (<a href="#Contents">Contents</a>)
void *bsearch(const void *key, const void *base,
size_t nmemb, size_t size,
-[<a name="#p488" href="p488">page 488</a>] (<a href="#Contents">Contents</a>)
+[<a name="p488" href="#p488">page 488</a>] (<a href="#Contents">Contents</a>)
void *bsearch_s(const void *key, const void *base,
rsize_t nmemb, rsize_t size,
size_t strxfrm(char * restrict s1,
const char * restrict s2, size_t n);
void *memchr(const void *s, int c, size_t n);
-[<a name="#p489" href="p489">page 489</a>] (<a href="#Contents">Contents</a>)
+[<a name="p489" href="#p489">page 489</a>] (<a href="#Contents">Contents</a>)
char *strchr(const char *s, int c);
size_t strcspn(const char *s1, const char *s2);
errno_t errnum);
size_t strerrorlen_s(errno_t errnum);
-[<a name="#p490" href="p490">page 490</a>] (<a href="#Contents">Contents</a>)
+[<a name="p490" href="#p490">page 490</a>] (<a href="#Contents">Contents</a>)
size_t strnlen_s(const char *s, size_t maxsize);
<a name="B.23" href="#B.23"><b>B.23 Type-generic math <tgmath.h></b></a>
void mtx_destroy(mtx_t *mtx);
int mtx_init(mtx_t *mtx, int type);
int mtx_lock(mtx_t *mtx);
-[<a name="#p491" href="p491">page 491</a>] (<a href="#Contents">Contents</a>)
+[<a name="p491" href="#p491">page 491</a>] (<a href="#Contents">Contents</a>)
int mtx_timedlock(mtx_t *mtx, const xtime *xt);
int mtx_trylock(mtx_t *mtx);
-[<a name="#p492" href="p492">page 492</a>] (<a href="#Contents">Contents</a>)
+[<a name="p492" href="#p492">page 492</a>] (<a href="#Contents">Contents</a>)
errno_t ctime_s(char *s, rsize_t maxsize,
const time_t *timer);
-[<a name="#p493" href="p493">page 493</a>] (<a href="#Contents">Contents</a>)
+[<a name="p493" href="#p493">page 493</a>] (<a href="#Contents">Contents</a>)
int vswscanf(const wchar_t * restrict s,
const wchar_t * restrict format, va_list arg);
-[<a name="#p494" href="p494">page 494</a>] (<a href="#Contents">Contents</a>)
+[<a name="p494" href="#p494">page 494</a>] (<a href="#Contents">Contents</a>)
wchar_t *wmemcpy(wchar_t * restrict s1,
const wchar_t * restrict s2, size_t n);
-[<a name="#p495" href="p495">page 495</a>] (<a href="#Contents">Contents</a>)
+[<a name="p495" href="#p495">page 495</a>] (<a href="#Contents">Contents</a>)
size_t wcrtomb(char * restrict s, wchar_t wc,
mbstate_t * restrict ps);
-[<a name="#p496" href="p496">page 496</a>] (<a href="#Contents">Contents</a>)
+[<a name="p496" href="#p496">page 496</a>] (<a href="#Contents">Contents</a>)
int vwprintf_s(const wchar_t * restrict format,
va_list arg);
-[<a name="#p497" href="p497">page 497</a>] (<a href="#Contents">Contents</a>)
+[<a name="p497" href="#p497">page 497</a>] (<a href="#Contents">Contents</a>)
errno_t wcsrtombs_s(size_t * restrict retval,
char * restrict dst, rsize_t dstmax,
-[<a name="#p498" href="p498">page 498</a>] (<a href="#Contents">Contents</a>)
+[<a name="p498" href="#p498">page 498</a>] (<a href="#Contents">Contents</a>)
<a name="C" href="#C"><b> Annex C</b></a>
(informative)
-[<a name="#p499" href="p499">page 499</a>] (<a href="#Contents">Contents</a>)
+[<a name="p499" href="#p499">page 499</a>] (<a href="#Contents">Contents</a>)
<a name="D" href="#D"><b> Annex D</b></a>
(normative)
-[<a name="#p500" href="p500">page 500</a>] (<a href="#Contents">Contents</a>)
+[<a name="p500" href="#p500">page 500</a>] (<a href="#Contents">Contents</a>)
<a name="E" href="#E"><b> Annex E</b></a>
(informative)
4 The values given in the following list shall be replaced by implementation-defined
constant expressions that are greater or equal in magnitude (absolute value) to those
shown, with the same sign:
-[<a name="#p501" href="p501">page 501</a>] (<a href="#Contents">Contents</a>)
+[<a name="p501" href="#p501">page 501</a>] (<a href="#Contents">Contents</a>)
#define DLB_DECIMAL_DIG 10
#define DBL_DIG 10
-[<a name="#p502" href="p502">page 502</a>] (<a href="#Contents">Contents</a>)
+[<a name="p502" href="#p502">page 502</a>] (<a href="#Contents">Contents</a>)
<a name="F" href="#F"><b> Annex F</b></a>
(normative)
345) A non-IEC 60559 long double type is required to provide infinity and NaNs, as its values include
all double values.
-[<a name="#p503" href="p503">page 503</a>] (<a href="#Contents">Contents</a>)
+[<a name="p503" href="#p503">page 503</a>] (<a href="#Contents">Contents</a>)
Recommended practice
2 The long double type should match an IEC 60559 extended format.
346) Since NaNs created by IEC 60559 operations are always quiet, quiet NaNs (along with infinities) are
sufficient for closure of the arithmetic.
-[<a name="#p504" href="p504">page 504</a>] (<a href="#Contents">Contents</a>)
+[<a name="p504" href="#p504">page 504</a>] (<a href="#Contents">Contents</a>)
<a href="#7.21"><stdio.h></a>, and <a href="#7.28"><wchar.h></a> provide IEC 60559 binary-decimal conversions. The
strtold function in <a href="#7.22"><stdlib.h></a> provides the conv function recommended in the
-- The nextafter and nexttoward functions in <a href="#7.12"><math.h></a> provide the nextafter
function recommended in the Appendix to IEC 60559 (but with a minor change to
-[<a name="#p505" href="p505">page 505</a>] (<a href="#Contents">Contents</a>)
+[<a name="p505" href="#p505">page 505</a>] (<a href="#Contents">Contents</a>)
better handle signed zeros).
-- The isfinite macro in <a href="#7.12"><math.h></a> provides the finite function recommended in
IEC 60559 format supported, then DECIMAL_DIG shall be at least 17. (By contrast, LDBL_DIG and
DBL_DIG are 18 and 15, respectively, for these formats.)
-[<a name="#p506" href="p506">page 506</a>] (<a href="#Contents">Contents</a>)
+[<a name="p506" href="#p506">page 506</a>] (<a href="#Contents">Contents</a>)
3 Functions such as strtod that convert character sequences to floating types honor the
rounding direction. Hence, if the rounding direction might be upward or downward, the
point control modes will be the default ones and the floating-point status flags will not be tested,
which allows certain optimizations (see <a href="#F.9">F.9</a>).
-[<a name="#p507" href="p507">page 507</a>] (<a href="#Contents">Contents</a>)
+[<a name="p507" href="#p507">page 507</a>] (<a href="#Contents">Contents</a>)
<a name="F.8.2" href="#F.8.2"><b> F.8.2 Translation</b></a>
1 During translation the IEC 60559 default modes are in effect:
const static double one_third = <a href="#1.0">1.0</a>/3.0;
-[<a name="#p508" href="p508">page 508</a>] (<a href="#Contents">Contents</a>)
+[<a name="p508" href="#p508">page 508</a>] (<a href="#Contents">Contents</a>)
#include <a href="#7.6"><fenv.h></a>
#pragma STDC FENV_ACCESS ON
double_t x = 1.1e75;
could be done at translation time, regardless of the expression evaluation method.
-[<a name="#p509" href="p509">page 509</a>] (<a href="#Contents">Contents</a>)
+[<a name="p509" href="#p509">page 509</a>] (<a href="#Contents">Contents</a>)
their internal representations occur at translation time in all cases.
about the order or count of floating-point exceptions. Therefore, between function calls,
floating-point exceptions need not be precise: the actual order and number of occurrences
of floating-point exceptions (> 1) may vary from what the source code expresses. Thus,
-[<a name="#p510" href="p510">page 510</a>] (<a href="#Contents">Contents</a>)
+[<a name="p510" href="#p510">page 510</a>] (<a href="#Contents">Contents</a>)
the preceding loop could be treated as
if (0 < n) x + 1;
conj(csqrt(z)) is csqrt(conj(z)),
for complex z.
-[<a name="#p511" href="p511">page 511</a>] (<a href="#Contents">Contents</a>)
+[<a name="p511" href="#p511">page 511</a>] (<a href="#Contents">Contents</a>)
<a name="F.9.3" href="#F.9.3"><b> F.9.3 Relational operators</b></a>
1 x != x (->) false The expression x != x is true if x is a NaN.
-[<a name="#p512" href="p512">page 512</a>] (<a href="#Contents">Contents</a>)
+[<a name="p512" href="#p512">page 512</a>] (<a href="#Contents">Contents</a>)
if (!(a < b))
g();
358) IEC 60559 allows different definitions of underflow. They all result in the same values, but differ on
when the floating-point exception is raised.
-[<a name="#p513" href="p513">page 513</a>] (<a href="#Contents">Contents</a>)
+[<a name="p513" href="#p513">page 513</a>] (<a href="#Contents">Contents</a>)
8 Whether or when library functions raise the ''inexact'' floating-point exception is
unspecified, unless explicitly specified otherwise.
359) It is intended that undeserved ''underflow'' and ''inexact'' floating-point exceptions are raised only if
avoiding them would be too costly.
-[<a name="#p514" href="p514">page 514</a>] (<a href="#Contents">Contents</a>)
+[<a name="p514" href="#p514">page 514</a>] (<a href="#Contents">Contents</a>)
<a name="F.10.1.3" href="#F.10.1.3"><b> F.10.1.3 The atan functions</b></a>
1 -- atan((+-)0) returns (+-)0.
360) atan2(0, 0) does not raise the ''invalid'' floating-point exception, nor does atan2( y , 0) raise
the ''divide-by-zero'' floating-point exception.
-[<a name="#p515" href="p515">page 515</a>] (<a href="#Contents">Contents</a>)
+[<a name="p515" href="#p515">page 515</a>] (<a href="#Contents">Contents</a>)
<a name="F.10.2" href="#F.10.2"><b> F.10.2 Hyperbolic functions</b></a>
<a name="F.10.2.1" href="#F.10.2.1"><b> F.10.2.1 The acosh functions</b></a>
-[<a name="#p516" href="p516">page 516</a>] (<a href="#Contents">Contents</a>)
+[<a name="p516" href="#p516">page 516</a>] (<a href="#Contents">Contents</a>)
<a name="F.10.3.2" href="#F.10.3.2"><b> F.10.3.2 The exp2 functions</b></a>
1 -- exp2((+-)0) returns 1.
-[<a name="#p517" href="p517">page 517</a>] (<a href="#Contents">Contents</a>)
+[<a name="p517" href="#p517">page 517</a>] (<a href="#Contents">Contents</a>)
<a name="F.10.3.6" href="#F.10.3.6"><b> F.10.3.6 The ldexp functions</b></a>
1 On a binary system, ldexp(x, exp) is equivalent to scalbn(x, exp).
-[<a name="#p518" href="p518">page 518</a>] (<a href="#Contents">Contents</a>)
+[<a name="p518" href="#p518">page 518</a>] (<a href="#Contents">Contents</a>)
<a name="F.10.3.12" href="#F.10.3.12"><b> F.10.3.12 The modf functions</b></a>
1 -- modf((+-)x, iptr) returns a result with the same sign as x.
-[<a name="#p519" href="p519">page 519</a>] (<a href="#Contents">Contents</a>)
+[<a name="p519" href="#p519">page 519</a>] (<a href="#Contents">Contents</a>)
<a name="F.10.4" href="#F.10.4"><b> F.10.4 Power and absolute value functions</b></a>
<a name="F.10.4.1" href="#F.10.4.1"><b> F.10.4.1 The cbrt functions</b></a>
-- pow(x, +(inf)) returns +(inf) for | x | > 1.
-[<a name="#p520" href="p520">page 520</a>] (<a href="#Contents">Contents</a>)
+[<a name="p520" href="#p520">page 520</a>] (<a href="#Contents">Contents</a>)
-- pow(-(inf), y) returns -0 for y an odd integer < 0.
-- pow(-(inf), y) returns +0 for y < 0 and not an odd integer.
-[<a name="#p521" href="p521">page 521</a>] (<a href="#Contents">Contents</a>)
+[<a name="p521" href="#p521">page 521</a>] (<a href="#Contents">Contents</a>)
<a name="F.10.6" href="#F.10.6"><b> F.10.6 Nearest integer functions</b></a>
<a name="F.10.6.1" href="#F.10.6.1"><b> F.10.6.1 The ceil functions</b></a>
-[<a name="#p522" href="p522">page 522</a>] (<a href="#Contents">Contents</a>)
+[<a name="p522" href="#p522">page 522</a>] (<a href="#Contents">Contents</a>)
<a name="F.10.6.4" href="#F.10.6.4"><b> F.10.6.4 The rint functions</b></a>
1 The rint functions differ from the nearbyint functions only in that they do raise the
-[<a name="#p523" href="p523">page 523</a>] (<a href="#Contents">Contents</a>)
+[<a name="p523" href="#p523">page 523</a>] (<a href="#Contents">Contents</a>)
<a name="F.10.6.7" href="#F.10.6.7"><b> F.10.6.7 The lround and llround functions</b></a>
1 The lround and llround functions differ from the lrint and llrint functions
-[<a name="#p524" href="p524">page 524</a>] (<a href="#Contents">Contents</a>)
+[<a name="p524" href="#p524">page 524</a>] (<a href="#Contents">Contents</a>)
<a name="F.10.7.2" href="#F.10.7.2"><b> F.10.7.2 The remainder functions</b></a>
1 The remainder functions are fully specified as a basic arithmetic operation in
-[<a name="#p525" href="p525">page 525</a>] (<a href="#Contents">Contents</a>)
+[<a name="p525" href="#p525">page 525</a>] (<a href="#Contents">Contents</a>)
<a name="F.10.9" href="#F.10.9"><b> F.10.9 Maximum, minimum, and positive difference functions</b></a>
<a name="F.10.9.1" href="#F.10.9.1"><b> F.10.9.1 The fdim functions</b></a>
361) Ideally, fmax would be sensitive to the sign of zero, for example fmax(-0.0, +0.0) would
return +0; however, implementation in software might be impractical.
-[<a name="#p526" href="p526">page 526</a>] (<a href="#Contents">Contents</a>)
+[<a name="p526" href="#p526">page 526</a>] (<a href="#Contents">Contents</a>)
<a name="F.10.11" href="#F.10.11"><b> F.10.11 Comparison macros</b></a>
1 Relational operators and their corresponding comparison macros (<a href="#7.12.14">7.12.14</a>) produce
-[<a name="#p527" href="p527">page 527</a>] (<a href="#Contents">Contents</a>)
+[<a name="p527" href="#p527">page 527</a>] (<a href="#Contents">Contents</a>)
<a name="G" href="#G"><b> Annex G</b></a>
(normative)
362) Implementations that do not define __STDC_IEC_559_COMPLEX__ are not required to conform
to these specifications.
-[<a name="#p528" href="p528">page 528</a>] (<a href="#Contents">Contents</a>)
+[<a name="p528" href="#p528">page 528</a>] (<a href="#Contents">Contents</a>)
<a name="G.4" href="#G.4"><b> G.4 Conversions</b></a>
<a name="G.4.1" href="#G.4.1"><b> G.4.1 Imaginary types</b></a>
363) See <a href="#6.3.1.2">6.3.1.2</a>.
-[<a name="#p529" href="p529">page 529</a>] (<a href="#Contents">Contents</a>)
+[<a name="p529" href="#p529">page 529</a>] (<a href="#Contents">Contents</a>)
<a name="G.5.1" href="#G.5.1"><b> G.5.1 Multiplicative operators</b></a>
Semantics
364) These properties are already implied for those cases covered in the tables, but are required for all cases
(at least where the state for CX_LIMITED_RANGE is ''off'').
-[<a name="#p530" href="p530">page 530</a>] (<a href="#Contents">Contents</a>)
+[<a name="p530" href="#p530">page 530</a>] (<a href="#Contents">Contents</a>)
-- if the first operand is a nonzero finite number or an infinity and the second operand is
a zero, then the result of the / operator is an infinity.
}
if (recalc) {
-[<a name="#p531" href="p531">page 531</a>] (<a href="#Contents">Contents</a>)
+[<a name="p531" href="#p531">page 531</a>] (<a href="#Contents">Contents</a>)
x = INFINITY * ( a * c - b * d );
y = INFINITY * ( a * d + b * c );
x = 0.0 * ( a * c + b * d );
y = 0.0 * ( b * c - a * d );
-[<a name="#p532" href="p532">page 532</a>] (<a href="#Contents">Contents</a>)
+[<a name="p532" href="#p532">page 532</a>] (<a href="#Contents">Contents</a>)
}
}
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
-[<a name="#p533" href="p533">page 533</a>] (<a href="#Contents">Contents</a>)
+[<a name="p533" href="#p533">page 533</a>] (<a href="#Contents">Contents</a>)
shown. Unless otherwise specified, where the symbol ''(+-)'' occurs in both an argument
and the result, the result has the same sign as the argument.
365) As noted in <a href="#G.3">G.3</a>, a complex value with at least one infinite part is regarded as an infinity even if its
other part is a NaN.
-[<a name="#p534" href="p534">page 534</a>] (<a href="#Contents">Contents</a>)
+[<a name="p534" href="#p534">page 534</a>] (<a href="#Contents">Contents</a>)
<a name="G.6.1" href="#G.6.1"><b> G.6.1 Trigonometric functions</b></a>
<a name="G.6.1.1" href="#G.6.1.1"><b> G.6.1.1 The cacos functions</b></a>
-- cacosh((+-)(inf) + iNaN) returns +(inf) + iNaN.
-[<a name="#p535" href="p535">page 535</a>] (<a href="#Contents">Contents</a>)
+[<a name="p535" href="#p535">page 535</a>] (<a href="#Contents">Contents</a>)
-- cacosh(NaN + iy) returns NaN + iNaN and optionally raises the ''invalid''
floating-point exception, for finite y.
-- catanh(+(inf) + i (inf)) returns +0 + ipi /2.
-- catanh(+(inf) + iNaN) returns +0 + iNaN.
-[<a name="#p536" href="p536">page 536</a>] (<a href="#Contents">Contents</a>)
+[<a name="p536" href="#p536">page 536</a>] (<a href="#Contents">Contents</a>)
-- catanh(NaN + iy) returns NaN + iNaN and optionally raises the ''invalid''
floating-point exception, for finite y.
unspecified) and raises the ''invalid'' floating-point exception.
-- csinh(+0 + iNaN) returns (+-)0 + iNaN (where the sign of the real part of the result is
unspecified).
-[<a name="#p537" href="p537">page 537</a>] (<a href="#Contents">Contents</a>)
+[<a name="p537" href="#p537">page 537</a>] (<a href="#Contents">Contents</a>)
-- csinh(x + i (inf)) returns NaN + iNaN and raises the ''invalid'' floating-point
exception, for positive finite x.
-[<a name="#p538" href="p538">page 538</a>] (<a href="#Contents">Contents</a>)
+[<a name="p538" href="#p538">page 538</a>] (<a href="#Contents">Contents</a>)
<a name="G.6.3" href="#G.6.3"><b> G.6.3 Exponential and logarithmic functions</b></a>
<a name="G.6.3.1" href="#G.6.3.1"><b> G.6.3.1 The cexp functions</b></a>
-- clog(x + iNaN) returns NaN + iNaN and optionally raises the ''invalid'' floating-
point exception, for finite x.
-[<a name="#p539" href="p539">page 539</a>] (<a href="#Contents">Contents</a>)
+[<a name="p539" href="#p539">page 539</a>] (<a href="#Contents">Contents</a>)
-- clog(-(inf) + iy) returns +(inf) + ipi , for finite positive-signed y.
-- clog(+(inf) + iy) returns +(inf) + i0, for finite positive-signed y.
366) This allows cpow( z , c ) to be implemented as cexp(c clog( z )) without precluding
implementations that treat special cases more carefully.
-[<a name="#p540" href="p540">page 540</a>] (<a href="#Contents">Contents</a>)
+[<a name="p540" href="#p540">page 540</a>] (<a href="#Contents">Contents</a>)
<a name="G.7" href="#G.7"><b> G.7 Type-generic math <tgmath.h></b></a>
1 Type-generic macros that accept complex arguments also accept imaginary arguments. If
-[<a name="#p541" href="p541">page 541</a>] (<a href="#Contents">Contents</a>)
+[<a name="p541" href="#p541">page 541</a>] (<a href="#Contents">Contents</a>)
<a name="H" href="#H"><b> Annex H</b></a>
(informative)
-[<a name="#p542" href="p542">page 542</a>] (<a href="#Contents">Contents</a>)
+[<a name="p542" href="#p542">page 542</a>] (<a href="#Contents">Contents</a>)
<a name="H.2.2.1" href="#H.2.2.1"><b> H.2.2.1 Integer operations</b></a>
1 The integer operations on integer types are the following:
2 The derived constants for the floating point types are accessed by the following:
-[<a name="#p543" href="p543">page 543</a>] (<a href="#Contents">Contents</a>)
+[<a name="p543" href="#p543">page 543</a>] (<a href="#Contents">Contents</a>)
fmax FLT_MAX, DBL_MAX, LDBL_MAX
fminN FLT_MIN, DBL_MIN, LDBL_MIN
truncate FLT_ROUNDS == 0
-[<a name="#p544" href="p544">page 544</a>] (<a href="#Contents">Contents</a>)
+[<a name="p544" href="#p544">page 544</a>] (<a href="#Contents">Contents</a>)
nearest FLT_ROUNDS == 1
other FLT_ROUNDS != 0 && FLT_ROUNDS != 1
-[<a name="#p545" href="p545">page 545</a>] (<a href="#Contents">Contents</a>)
+[<a name="p545" href="#p545">page 545</a>] (<a href="#Contents">Contents</a>)
<a name="H.3" href="#H.3"><b> H.3 Notification</b></a>
1 Notification is the process by which a user or program is informed that an exceptional
where i is an expression of type int representing a subset of the LIA-1 indicators.
4 C allows an implementation to provide the following LIA-1 required behavior: at
program termination if any indicator is set the implementation shall send an unambiguous
-[<a name="#p546" href="p546">page 546</a>] (<a href="#Contents">Contents</a>)
+[<a name="p546" href="#p546">page 546</a>] (<a href="#Contents">Contents</a>)
and ''hard to ignore'' message (see LIA-1 subclause <a href="#6.1.2">6.1.2</a>)
5 LIA-1 does not make the distinction between floating-point and integer for ''undefined''.
-[<a name="#p547" href="p547">page 547</a>] (<a href="#Contents">Contents</a>)
+[<a name="p547" href="#p547">page 547</a>] (<a href="#Contents">Contents</a>)
<a name="I" href="#I"><b> Annex I</b></a>
(informative)
-- A statement with no apparent effect is encountered (<a href="#6.8">6.8</a>).
-- A constant expression is used as the controlling expression of a selection statement
(<a href="#6.8.4">6.8.4</a>).
-[<a name="#p548" href="p548">page 548</a>] (<a href="#Contents">Contents</a>)
+[<a name="p548" href="#p548">page 548</a>] (<a href="#Contents">Contents</a>)
-- An incorrectly formed preprocessing group is encountered while skipping a
preprocessing group (<a href="#6.10.1">6.10.1</a>).
-[<a name="#p549" href="p549">page 549</a>] (<a href="#Contents">Contents</a>)
+[<a name="p549" href="#p549">page 549</a>] (<a href="#Contents">Contents</a>)
<a name="J" href="#J"><b> Annex J</b></a>
(informative)
-- Whether two string literals result in distinct arrays (<a href="#6.4.5">6.4.5</a>).
-- The order in which subexpressions are evaluated and the order in which side effects
take place, except as specified for the function-call (), &&, ||, ? :, and comma
-[<a name="#p550" href="p550">page 550</a>] (<a href="#Contents">Contents</a>)
+[<a name="p550" href="#p550">page 550</a>] (<a href="#Contents">Contents</a>)
operators (<a href="#6.5">6.5</a>).
-- The order in which the function designator, arguments, and subexpressions within the
-- The result of rounding when the value is out of range (<a href="#7.12.9.5">7.12.9.5</a>, <a href="#7.12.9.7">7.12.9.7</a>, <a href="#F.10.6.5">F.10.6.5</a>).
-[<a name="#p551" href="p551">page 551</a>] (<a href="#Contents">Contents</a>)
+[<a name="p551" href="#p551">page 551</a>] (<a href="#Contents">Contents</a>)
-- The value stored by the remquo functions in the object pointed to by quo when y is
zero (<a href="#7.12.10.3">7.12.10.3</a>).
-[<a name="#p552" href="p552">page 552</a>] (<a href="#Contents">Contents</a>)
+[<a name="p552" href="#p552">page 552</a>] (<a href="#Contents">Contents</a>)
-- Whether conversion of non-integer IEC 60559 floating values to integer raises the
''inexact'' floating-point exception (<a href="#F.4">F.4</a>).
-[<a name="#p553" href="p553">page 553</a>] (<a href="#Contents">Contents</a>)
+[<a name="p553" href="#p553">page 553</a>] (<a href="#Contents">Contents</a>)
-- The value of a pointer to an object whose lifetime has ended is used (<a href="#6.2.4">6.2.4</a>).
-- The value of an object with automatic storage duration is used while it is
-[<a name="#p554" href="p554">page 554</a>] (<a href="#Contents">Contents</a>)
+[<a name="p554" href="#p554">page 554</a>] (<a href="#Contents">Contents</a>)
-- An unmatched ' or " character is encountered on a logical source line during
tokenization (<a href="#6.4">6.4</a>).
-- The operand of the unary * operator has an invalid value (<a href="#6.5.3.2">6.5.3.2</a>).
-[<a name="#p555" href="p555">page 555</a>] (<a href="#Contents">Contents</a>)
+[<a name="p555" href="#p555">page 555</a>] (<a href="#Contents">Contents</a>)
-- A pointer is converted to other than an integer or pointer type (<a href="#6.5.4">6.5.4</a>).
-- The value of the second operand of the / or % operator is zero (<a href="#6.5.5">6.5.5</a>).
are not integer constants, floating constants, enumeration constants, character
constants, or sizeof expressions; or contains casts (outside operands to sizeof
-[<a name="#p556" href="p556">page 556</a>] (<a href="#Contents">Contents</a>)
+[<a name="p556" href="#p556">page 556</a>] (<a href="#Contents">Contents</a>)
operators) other than conversions of arithmetic types to arithmetic types (<a href="#6.6">6.6</a>).
-- The value of an object is accessed by an array-subscript [], member-access . or ->,
object has a different alignment specifier (<a href="#6.7.5">6.7.5</a>).
-[<a name="#p557" href="p557">page 557</a>] (<a href="#Contents">Contents</a>)
+[<a name="p557" href="#p557">page 557</a>] (<a href="#Contents">Contents</a>)
-- Declarations of an object in different translation units have different alignment
specifiers (<a href="#6.7.5">6.7.5</a>).
-- A function that accepts a variable number of arguments is defined without a
parameter type list that ends with the ellipsis notation (<a href="#6.9.1">6.9.1</a>).
-[<a name="#p558" href="p558">page 558</a>] (<a href="#Contents">Contents</a>)
+[<a name="p558" href="#p558">page 558</a>] (<a href="#Contents">Contents</a>)
-- The } that terminates a function is reached, and the value of the function call is used
by the caller (<a href="#6.9.1">6.9.1</a>).
some standard header is used before any header that declares or defines it is included
(<a href="#7.1.2">7.1.2</a>).
-[<a name="#p559" href="p559">page 559</a>] (<a href="#Contents">Contents</a>)
+[<a name="p559" href="#p559">page 559</a>] (<a href="#Contents">Contents</a>)
-- A standard header is included while a macro is defined with the same name as a
keyword (<a href="#7.1.2">7.1.2</a>).
-- The value of the result of an integer arithmetic or conversion function cannot be
represented (<a href="#7.8.2.1">7.8.2.1</a>, <a href="#7.8.2.2">7.8.2.2</a>, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.22.6.1">7.22.6.1</a>, <a href="#7.22.6.2">7.22.6.2</a>, <a href="#7.22.1">7.22.1</a>).
-[<a name="#p560" href="p560">page 560</a>] (<a href="#Contents">Contents</a>)
+[<a name="p560" href="#p560">page 560</a>] (<a href="#Contents">Contents</a>)
-- The program modifies the string pointed to by the value returned by the setlocale
function (<a href="#7.11.1.1">7.11.1.1</a>).
arguments other than through a properly declared and initialized va_list object, or
before the va_start macro is invoked (<a href="#7.16">7.16</a>, <a href="#7.16.1.1">7.16.1.1</a>, <a href="#7.16.1.4">7.16.1.4</a>).
-[<a name="#p561" href="p561">page 561</a>] (<a href="#Contents">Contents</a>)
+[<a name="p561" href="#p561">page 561</a>] (<a href="#Contents">Contents</a>)
-- The macro va_arg is invoked using the parameter ap that was passed to a function
that invoked the macro va_arg with the same parameter (<a href="#7.16">7.16</a>).
exactly match one of the specified character sequences (<a href="#7.21.5.3">7.21.5.3</a>).
-- An output operation on an update stream is followed by an input operation without an
intervening call to the fflush function or a file positioning function, or an input
-[<a name="#p562" href="p562">page 562</a>] (<a href="#Contents">Contents</a>)
+[<a name="p562" href="#p562">page 562</a>] (<a href="#Contents">Contents</a>)
operation on an update stream is followed by an output operation with an intervening
call to a file positioning function (<a href="#7.21.5.3">7.21.5.3</a>).
INT_MAX (<a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.3">7.21.6.3</a>, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.10">7.21.6.10</a>).
-[<a name="#p563" href="p563">page 563</a>] (<a href="#Contents">Contents</a>)
+[<a name="p563" href="#p563">page 563</a>] (<a href="#Contents">Contents</a>)
-- The result of a conversion by one of the formatted input functions cannot be
represented in the corresponding object, or the receiving object does not have an
realloc function is used (<a href="#7.22.3">7.22.3</a>).
-[<a name="#p564" href="p564">page 564</a>] (<a href="#Contents">Contents</a>)
+[<a name="p564" href="#p564">page 564</a>] (<a href="#Contents">Contents</a>)
-- The alignment requested of the aligned_alloc function is not valid or not
supported by the implementation, or the size requested is not an integral multiple of
too small to hold the entire null-terminated result (<a href="#7.23.4.5">7.23.4.5</a>, <a href="#7.26.3.5">7.26.3.5</a>, <a href="#7.28.4.4.4">7.28.4.4.4</a>,
<a href="#7.28.5.1">7.28.5.1</a>).
-[<a name="#p565" href="p565">page 565</a>] (<a href="#Contents">Contents</a>)
+[<a name="p565" href="#p565">page 565</a>] (<a href="#Contents">Contents</a>)
-- The first argument in the very first call to the strtok or wcstok is a null pointer
(<a href="#7.23.5.8">7.23.5.8</a>, <a href="#7.28.4.5.7">7.28.4.5.7</a>).
-[<a name="#p566" href="p566">page 566</a>] (<a href="#Contents">Contents</a>)
+[<a name="p566" href="#p566">page 566</a>] (<a href="#Contents">Contents</a>)
<a name="J.3.1" href="#J.3.1"><b> J.3.1 Translation</b></a>
1 -- How a diagnostic is identified (<a href="#3.10">3.10</a>, <a href="#5.1.1.3">5.1.1.3</a>).
-[<a name="#p567" href="p567">page 567</a>] (<a href="#Contents">Contents</a>)
+[<a name="p567" href="#p567">page 567</a>] (<a href="#Contents">Contents</a>)
<a name="J.3.4" href="#J.3.4"><b> J.3.4 Characters</b></a>
1 -- The number of bits in a byte (<a href="#3.6">3.6</a>).
-[<a name="#p568" href="p568">page 568</a>] (<a href="#Contents">Contents</a>)
+[<a name="p568" href="#p568">page 568</a>] (<a href="#Contents">Contents</a>)
<a name="J.3.5" href="#J.3.5"><b> J.3.5 Integers</b></a>
1 -- Any extended integer types that exist in the implementation (<a href="#6.2.5">6.2.5</a>).
-- The default state for the FP_CONTRACT pragma (<a href="#7.12.2">7.12.2</a>).
-[<a name="#p569" href="p569">page 569</a>] (<a href="#Contents">Contents</a>)
+[<a name="p569" href="#p569">page 569</a>] (<a href="#Contents">Contents</a>)
<a name="J.3.7" href="#J.3.7"><b> J.3.7 Arrays and pointers</b></a>
1 -- The result of converting a pointer to an integer or vice versa (<a href="#6.3.2.3">6.3.2.3</a>).
that controls conditional inclusion may have a negative value (<a href="#6.10.1">6.10.1</a>).
-[<a name="#p570" href="p570">page 570</a>] (<a href="#Contents">Contents</a>)
+[<a name="p570" href="#p570">page 570</a>] (<a href="#Contents">Contents</a>)
-- The places that are searched for an included < > delimited header, and how the places
are specified or the header is identified (<a href="#6.10.2">6.10.2</a>).
floating-point exception is raised when the integer expression math_errhandling
& MATH_ERREXCEPT is nonzero. (<a href="#7.12.1">7.12.1</a>).
-[<a name="#p571" href="p571">page 571</a>] (<a href="#Contents">Contents</a>)
+[<a name="p571" href="#p571">page 571</a>] (<a href="#Contents">Contents</a>)
-- Whether a domain error occurs or zero is returned when an fmod function has a
second argument of zero (<a href="#7.12.10.1">7.12.10.1</a>).
-- Which changes of mode are permitted (if any), and under what circumstances
(<a href="#7.21.5.4">7.21.5.4</a>).
-[<a name="#p572" href="p572">page 572</a>] (<a href="#Contents">Contents</a>)
+[<a name="p572" href="#p572">page 572</a>] (<a href="#Contents">Contents</a>)
-- The style used to print an infinity or NaN, and the meaning of any n-char or n-wchar
sequence printed for a NaN (<a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a>).
-[<a name="#p573" href="p573">page 573</a>] (<a href="#Contents">Contents</a>)
+[<a name="p573" href="#p573">page 573</a>] (<a href="#Contents">Contents</a>)
<a name="J.3.13" href="#J.3.13"><b> J.3.13 Architecture</b></a>
1 -- The values or expressions assigned to the macros specified in the headers
-- The collation sequence of the execution character set (<a href="#7.23.4.3">7.23.4.3</a>, <a href="#7.28.4.4.2">7.28.4.4.2</a>).
-[<a name="#p574" href="p574">page 574</a>] (<a href="#Contents">Contents</a>)
+[<a name="p574" href="#p574">page 574</a>] (<a href="#Contents">Contents</a>)
-- The contents of the error message strings set up by the strerror function
(<a href="#7.23.6.2">7.23.6.2</a>).
-[<a name="#p575" href="p575">page 575</a>] (<a href="#Contents">Contents</a>)
+[<a name="p575" href="#p575">page 575</a>] (<a href="#Contents">Contents</a>)
<a name="J.5.6" href="#J.5.6"><b> J.5.6 Other arithmetic types</b></a>
1 Additional arithmetic types, such as __int128 or double double, and their
-[<a name="#p576" href="p576">page 576</a>] (<a href="#Contents">Contents</a>)
+[<a name="p576" href="#p576">page 576</a>] (<a href="#Contents">Contents</a>)
<a name="J.5.13" href="#J.5.13"><b> J.5.13 Floating-point status flags</b></a>
1 If any floating-point status flags are set on normal termination after all calls to functions
-[<a name="#p577" href="p577">page 577</a>] (<a href="#Contents">Contents</a>)
+[<a name="p577" href="#p577">page 577</a>] (<a href="#Contents">Contents</a>)
<a name="K" href="#K"><b> Annex K</b></a>
(normative)
-[<a name="#p578" href="p578">page 578</a>] (<a href="#Contents">Contents</a>)
+[<a name="p578" href="#p578">page 578</a>] (<a href="#Contents">Contents</a>)
<a name="K.2" href="#K.2"><b> K.2 Scope</b></a>
1 This annex specifies a series of optional extensions that can be useful in the mitigation of
unreserved name is defined in a header when __STDC_WANT_LIB_EXT1__ is defined as 0, the
implementation is not conforming.
-[<a name="#p579" href="p579">page 579</a>] (<a href="#Contents">Contents</a>)
+[<a name="p579" href="#p579">page 579</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.1.2" href="#K.3.1.2"><b> K.3.1.2 Reserved identifiers</b></a>
1 Each macro name in any of the following subclauses is reserved for use as specified if it
runtime-constraint violation by calling the runtime-constraint handler. This license comes directly
from the definition of undefined behavior.
-[<a name="#p580" href="p580">page 580</a>] (<a href="#Contents">Contents</a>)
+[<a name="p580" href="#p580">page 580</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.2" href="#K.3.2"><b> K.3.2 Errors <errno.h></b></a>
1 The header <a href="#7.5"><errno.h></a> defines a type.
372) See the description of the RSIZE_MAX macro in <a href="#7.20"><stdint.h></a>.
373) The macro RSIZE_MAX need not expand to a constant expression.
-[<a name="#p581" href="p581">page 581</a>] (<a href="#Contents">Contents</a>)
+[<a name="p581" href="#p581">page 581</a>] (<a href="#Contents">Contents</a>)
is no object size that is considered a runtime-constraint violation.
<a name="K.3.5" href="#K.3.5"><b> K.3.5 Input/output <stdio.h></b></a>
on exclusive access and file permissions).
-[<a name="#p582" href="p582">page 582</a>] (<a href="#Contents">Contents</a>)
+[<a name="p582" href="#p582">page 582</a>] (<a href="#Contents">Contents</a>)
5 If the file was created successfully, then the pointer to FILE pointed to by streamptr
will be set to the pointer to the object controlling the opened file. Otherwise, the pointer
race condition and possible conflict when multiple programs run simultaneously by the same user
generate the same temporary file names.
-[<a name="#p583" href="p583">page 583</a>] (<a href="#Contents">Contents</a>)
+[<a name="p583" href="#p583">page 583</a>] (<a href="#Contents">Contents</a>)
6 The implementation shall behave as if no library function except tmpnam calls the
tmpnam_s function.375)
375) An implementation may have tmpnam call tmpnam_s (perhaps so there is only one naming
convention for temporary files), but this is not required.
-[<a name="#p584" href="p584">page 584</a>] (<a href="#Contents">Contents</a>)
+[<a name="p584" href="#p584">page 584</a>] (<a href="#Contents">Contents</a>)
Description
4 The fopen_s function opens the file whose name is the string pointed to by
376) These are the same permissions that the file would have been created with by fopen.
-[<a name="#p585" href="p585">page 585</a>] (<a href="#Contents">Contents</a>)
+[<a name="p585" href="#p585">page 585</a>] (<a href="#Contents">Contents</a>)
to FILE pointed to by streamptr will be set to a null pointer.
Returns
8 The freopen_s function returns zero if it opened the file. If it did not open the file or
there was a runtime-constraint violation, freopen_s returns a nonzero value.
-[<a name="#p586" href="p586">page 586</a>] (<a href="#Contents">Contents</a>)
+[<a name="p586" href="#p586">page 586</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.5.3" href="#K.3.5.3"><b> K.3.5.3 Formatted input/output functions</b></a>
1 Unless explicitly stated otherwise, if the execution of a function described in this
implementation may treat any unsupported specifiers in the string pointed to by format as a runtime-
constraint violation.
-[<a name="#p587" href="p587">page 587</a>] (<a href="#Contents">Contents</a>)
+[<a name="p587" href="#p587">page 587</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.5.3.2" href="#K.3.5.3.2"><b> K.3.5.3.2 The fscanf_s function</b></a>
Synopsis
diagnostic could flag any non-pointer argument following format that did not have a type
compatible with rsize_t.
-[<a name="#p588" href="p588">page 588</a>] (<a href="#Contents">Contents</a>)
+[<a name="p588" href="#p588">page 588</a>] (<a href="#Contents">Contents</a>)
fscanf_s function returns the number of input items assigned, which can be fewer than
provided for, or even zero, in the event of an early matching failure.
at by format when those characters are not a interpreted as a %n specifier. For example, if the entire
format string was %%n.
-[<a name="#p589" href="p589">page 589</a>] (<a href="#Contents">Contents</a>)
+[<a name="p589" href="#p589">page 589</a>] (<a href="#Contents">Contents</a>)
Description
4 The printf_s function is equivalent to the printf function except for the explicit
2 Neither s nor format shall be a null pointer. n shall neither equal zero nor be greater
than RSIZE_MAX. The %n specifier382) (modified or not by flags, field width, or
precision) shall not appear in the string pointed to by format. Any argument to
-[<a name="#p590" href="p590">page 590</a>] (<a href="#Contents">Contents</a>)
+[<a name="p590" href="#p590">page 590</a>] (<a href="#Contents">Contents</a>)
snprintf_s corresponding to a %s specifier shall not be a null pointer. No encoding
error shall occur.
at by format when those characters are not a interpreted as a %n specifier. For example, if the entire
format string was %%n.
-[<a name="#p591" href="p591">page 591</a>] (<a href="#Contents">Contents</a>)
+[<a name="p591" href="#p591">page 591</a>] (<a href="#Contents">Contents</a>)
3 If there is a runtime-constraint violation, then if s is not a null pointer and n is greater
than zero and less than RSIZE_MAX, then the sprintf_s function sets s[0] to the
sscanf_s function returns the number of input items assigned, which can be fewer than
provided for, or even zero, in the event of an early matching failure.
-[<a name="#p592" href="p592">page 592</a>] (<a href="#Contents">Contents</a>)
+[<a name="p592" href="#p592">page 592</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.5.3.8" href="#K.3.5.3.8"><b> K.3.5.3.8 The vfprintf_s function</b></a>
Synopsis
at by format when those characters are not a interpreted as a %n specifier. For example, if the entire
format string was %%n.
-[<a name="#p593" href="p593">page 593</a>] (<a href="#Contents">Contents</a>)
+[<a name="p593" href="#p593">page 593</a>] (<a href="#Contents">Contents</a>)
Runtime-constraints
2 Neither stream nor format shall be a null pointer. Any argument indirected though in
at by format when those characters are not a interpreted as a %n specifier. For example, if the entire
format string was %%n.
-[<a name="#p594" href="p594">page 594</a>] (<a href="#Contents">Contents</a>)
+[<a name="p594" href="#p594">page 594</a>] (<a href="#Contents">Contents</a>)
Description
4 The vprintf_s function is equivalent to the vprintf function except for the explicit
vsprintf_s, and vsscanf_s invoke the va_arg macro, the value of arg after the return is
indeterminate.
-[<a name="#p595" href="p595">page 595</a>] (<a href="#Contents">Contents</a>)
+[<a name="p595" href="#p595">page 595</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.5.3.12" href="#K.3.5.3.12"><b> K.3.5.3.12 The vsnprintf_s function</b></a>
Synopsis
at by format when those characters are not a interpreted as a %n specifier. For example, if the entire
format string was %%n.
-[<a name="#p596" href="p596">page 596</a>] (<a href="#Contents">Contents</a>)
+[<a name="p596" href="#p596">page 596</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.5.3.13" href="#K.3.5.3.13"><b> K.3.5.3.13 The vsprintf_s function</b></a>
Synopsis
at by format when those characters are not a interpreted as a %n specifier. For example, if the entire
format string was %%n.
-[<a name="#p597" href="p597">page 597</a>] (<a href="#Contents">Contents</a>)
+[<a name="p597" href="#p597">page 597</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.5.3.14" href="#K.3.5.3.14"><b> K.3.5.3.14 The vsscanf_s function</b></a>
Synopsis
vsprintf_s, and vsscanf_s invoke the va_arg macro, the value of arg after the return is
indeterminate.
-[<a name="#p598" href="p598">page 598</a>] (<a href="#Contents">Contents</a>)
+[<a name="p598" href="#p598">page 598</a>] (<a href="#Contents">Contents</a>)
Runtime-constraints
2 s shall not be a null pointer. n shall neither be equal to zero nor be greater than
one-to-one relationship between input lines and successful calls to gets_s. Programs that use gets
expect such a relationship.
-[<a name="#p599" href="p599">page 599</a>] (<a href="#Contents">Contents</a>)
+[<a name="p599" href="#p599">page 599</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.6" href="#K.3.6"><b> K.3.6 General utilities <stdlib.h></b></a>
1 The header <a href="#7.22"><stdlib.h></a> defines three types.
-[<a name="#p600" href="p600">page 600</a>] (<a href="#Contents">Contents</a>)
+[<a name="p600" href="#p600">page 600</a>] (<a href="#Contents">Contents</a>)
4 The implementation has a default constraint handler that is used if no calls to the
set_constraint_handler_s function have been made. The behavior of the
pointer argument, a pointer to the implementation default handler is returned (not NULL).
393) Many implementations invoke a debugger when the abort function is called.
-[<a name="#p601" href="p601">page 601</a>] (<a href="#Contents">Contents</a>)
+[<a name="p601" href="#p601">page 601</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.6.1.3" href="#K.3.6.1.3"><b> K.3.6.1.3 The ignore_handler_s function</b></a>
Synopsis
a runtime-constraint violation occurred based on the library function's specification (usually, the
library function returns a nonzero errno_t).
-[<a name="#p602" href="p602">page 602</a>] (<a href="#Contents">Contents</a>)
+[<a name="p602" href="#p602">page 602</a>] (<a href="#Contents">Contents</a>)
5 If that name is found then getenv_s performs the following actions. If len is not a
null pointer, the length of the string associated with the matched list member is stored in
(char *)p < (char *)base + nmemb * size
-[<a name="#p603" href="p603">page 603</a>] (<a href="#Contents">Contents</a>)
+[<a name="p603" href="#p603">page 603</a>] (<a href="#Contents">Contents</a>)
5 A sequence point occurs immediately before and immediately after each call to the
comparison function, and also between any call to the comparison function and any
397) The context argument is for the use of the comparison function in performing its duties. For
example, it might specify a collating sequence used by the comparison function.
-[<a name="#p604" href="p604">page 604</a>] (<a href="#Contents">Contents</a>)
+[<a name="p604" href="#p604">page 604</a>] (<a href="#Contents">Contents</a>)
Returns
6 The bsearch_s function returns a pointer to a matching element of the array, or a null
398) The context argument is for the use of the comparison function in performing its duties. For
example, it might specify a collating sequence used by the comparison function.
-[<a name="#p605" href="p605">page 605</a>] (<a href="#Contents">Contents</a>)
+[<a name="p605" href="#p605">page 605</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.6.4" href="#K.3.6.4"><b> K.3.6.4 Multibyte/wide character conversion functions</b></a>
1 The behavior of the multibyte character functions is affected by the LC_CTYPE category
399) If the locale employs special bytes to change the shift state, these bytes do not produce separate wide
character codes, but are grouped with an adjacent multibyte character.
-[<a name="#p606" href="p606">page 606</a>] (<a href="#Contents">Contents</a>)
+[<a name="p606" href="#p606">page 606</a>] (<a href="#Contents">Contents</a>)
7 If s is a null pointer, the wctomb_s function stores into the int pointed to by status a
nonzero or zero value, if multibyte character encodings, respectively, do or do not have
wide characters. If dst is not a null pointer, the converted characters are stored into the
array pointed to by dst. Conversion continues up to and including a terminating null
character, which is also stored. Conversion stops earlier in two cases: when a sequence of
-[<a name="#p607" href="p607">page 607</a>] (<a href="#Contents">Contents</a>)
+[<a name="p607" href="#p607">page 607</a>] (<a href="#Contents">Contents</a>)
bytes is encountered that does not form a valid multibyte character, or (if dst is not a
null pointer) when len wide characters have been stored into the array pointed to by
401) This allows an implementation to attempt converting the multibyte string before discovering a
terminating null character did not occur where required.
-[<a name="#p608" href="p608">page 608</a>] (<a href="#Contents">Contents</a>)
+[<a name="p608" href="#p608">page 608</a>] (<a href="#Contents">Contents</a>)
3 If there is a runtime-constraint violation, then wcstombs_s does the following. If
retval is not a null pointer, then wcstombs_s sets *retval to (size_t)(-1). If
403) When len is not less than dstmax, the implementation might fill the array before discovering a
runtime-constraint violation.
-[<a name="#p609" href="p609">page 609</a>] (<a href="#Contents">Contents</a>)
+[<a name="p609" href="#p609">page 609</a>] (<a href="#Contents">Contents</a>)
Returns
8 The wcstombs_s function returns zero if no runtime-constraint violation and no
-[<a name="#p610" href="p610">page 610</a>] (<a href="#Contents">Contents</a>)
+[<a name="p610" href="#p610">page 610</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.7.1.2" href="#K.3.7.1.2"><b> K.3.7.1.2 The memmove_s function</b></a>
Synopsis
greater than zero and not greater than RSIZE_MAX, then strcpy_s sets s1[0] to the
null character.
-[<a name="#p611" href="p611">page 611</a>] (<a href="#Contents">Contents</a>)
+[<a name="p611" href="#p611">page 611</a>] (<a href="#Contents">Contents</a>)
Description
4 The strcpy_s function copies the string pointed to by s2 (including the terminating
405) A zero return value implies that all of the requested characters from the string pointed to by s2 fit
within the array pointed to by s1 and that the result in s1 is null terminated.
-[<a name="#p612" href="p612">page 612</a>] (<a href="#Contents">Contents</a>)
+[<a name="p612" href="#p612">page 612</a>] (<a href="#Contents">Contents</a>)
5 All elements following the terminating null character (if any) written by strncpy_s in
the array of s1max characters pointed to by s1 take unspecified values when
407) A zero return value implies that all of the requested characters from the string pointed to by s2 fit
within the array pointed to by s1 and that the result in s1 is null terminated.
-[<a name="#p613" href="p613">page 613</a>] (<a href="#Contents">Contents</a>)
+[<a name="p613" href="#p613">page 613</a>] (<a href="#Contents">Contents</a>)
3 Neither s1 nor s2 shall be a null pointer. s1max shall not be greater than RSIZE_MAX.
s1max shall not equal zero. m shall not equal zero.408) m shall be greater than
410) A zero return value implies that all of the requested characters from the string pointed to by s2 were
appended to the string pointed to by s1 and that the result in s1 is null terminated.
-[<a name="#p614" href="p614">page 614</a>] (<a href="#Contents">Contents</a>)
+[<a name="p614" href="#p614">page 614</a>] (<a href="#Contents">Contents</a>)
than m, then m shall be greater than strnlen_s(s2, m). Copying shall not take
place between objects that overlap.
413) A zero return value implies that all of the requested characters from the string pointed to by s2 were
appended to the string pointed to by s1 and that the result in s1 is null terminated.
-[<a name="#p615" href="p615">page 615</a>] (<a href="#Contents">Contents</a>)
+[<a name="p615" href="#p615">page 615</a>] (<a href="#Contents">Contents</a>)
After the second call r2 will have the value zero and s2 will contain the sequence hello\0.
After the third call r3 will have a nonzero value and s3 will contain the sequence \0.
that is not contained in the current separator string pointed to by s2. If no such character
is found, then there are no tokens in the string pointed to by s1 and the strtok_s
function returns a null pointer. If such a character is found, it is the start of the first token.
-[<a name="#p616" href="p616">page 616</a>] (<a href="#Contents">Contents</a>)
+[<a name="p616" href="#p616">page 616</a>] (<a href="#Contents">Contents</a>)
7 The strtok_s function then searches from there for the first character in s1 that is
contained in the current separator string. If no such character is found, the current token
-[<a name="#p617" href="p617">page 617</a>] (<a href="#Contents">Contents</a>)
+[<a name="p617" href="#p617">page 617</a>] (<a href="#Contents">Contents</a>)
Description
4 The memset_s function copies the value of c (converted to an unsigned char) into
maxsize and there was no runtime-constraint violation. Otherwise, the strerror_s
function returns a nonzero value.
-[<a name="#p618" href="p618">page 618</a>] (<a href="#Contents">Contents</a>)
+[<a name="p618" href="#p618">page 618</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.7.4.3" href="#K.3.7.4.3"><b> K.3.7.4.3 The strerrorlen_s function</b></a>
Synopsis
along with the values returned for a null pointer or an unterminated string argument make
strnlen_s useful in algorithms that gracefully handle such exceptional data.
-[<a name="#p619" href="p619">page 619</a>] (<a href="#Contents">Contents</a>)
+[<a name="p619" href="#p619">page 619</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.8" href="#K.3.8"><b> K.3.8 Date and time <time.h></b></a>
1 The header <a href="#7.26"><time.h></a> defines two types.
415) The normal ranges are defined in <a href="#7.26.1">7.26.1</a>.
-[<a name="#p620" href="p620">page 620</a>] (<a href="#Contents">Contents</a>)
+[<a name="p620" href="#p620">page 620</a>] (<a href="#Contents">Contents</a>)
form
Sun Sep 16 01:03:52 1973\n\0
Returns
5 The asctime_s function returns zero if the time was successfully converted and stored
into the array pointed to by s. Otherwise, it returns a nonzero value.
-[<a name="#p621" href="p621">page 621</a>] (<a href="#Contents">Contents</a>)
+[<a name="p621" href="#p621">page 621</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.8.2.2" href="#K.3.8.2.2"><b> K.3.8.2.2 The ctime_s function</b></a>
Synopsis
Description
4 The gmtime_s function converts the calendar time pointed to by timer into a broken-
down time, expressed as UTC. The broken-down time is stored in the structure pointed
-[<a name="#p622" href="p622">page 622</a>] (<a href="#Contents">Contents</a>)
+[<a name="p622" href="#p622">page 622</a>] (<a href="#Contents">Contents</a>)
to by result.
Returns
-[<a name="#p623" href="p623">page 623</a>] (<a href="#Contents">Contents</a>)
+[<a name="p623" href="#p623">page 623</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.9.1" href="#K.3.9.1"><b> K.3.9.1 Formatted wide character input/output functions</b></a>
<a name="K.3.9.1.1" href="#K.3.9.1.1"><b> K.3.9.1.1 The fwprintf_s function</b></a>
string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
example, if the entire format string was L"%%n".
-[<a name="#p624" href="p624">page 624</a>] (<a href="#Contents">Contents</a>)
+[<a name="p624" href="#p624">page 624</a>] (<a href="#Contents">Contents</a>)
3 If there is a runtime-constraint violation, the fwscanf_s function does not attempt to
perform further input, and it is unspecified to what extent fwscanf_s performed input
diagnostic could flag any non-pointer argument following format that did not have a type
compatible with rsize_t.
-[<a name="#p625" href="p625">page 625</a>] (<a href="#Contents">Contents</a>)
+[<a name="p625" href="#p625">page 625</a>] (<a href="#Contents">Contents</a>)
precision) shall not appear in the wide string pointed to by format. Any argument to
snwprintf_s corresponding to a %s specifier shall not be a null pointer. No encoding
string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
example, if the entire format string was L"%%n".
-[<a name="#p626" href="p626">page 626</a>] (<a href="#Contents">Contents</a>)
+[<a name="p626" href="#p626">page 626</a>] (<a href="#Contents">Contents</a>)
3 If there is a runtime-constraint violation, then if s is not a null pointer and n is greater
than zero and less than RSIZE_MAX, then the swprintf_s function sets s[0] to the
before any conversion or if there is a runtime-constraint violation. Otherwise, the
swscanf_s function returns the number of input items assigned, which can be fewer
than provided for, or even zero, in the event of an early matching failure.
-[<a name="#p627" href="p627">page 627</a>] (<a href="#Contents">Contents</a>)
+[<a name="p627" href="#p627">page 627</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.9.1.6" href="#K.3.9.1.6"><b> K.3.9.1.6 The vfwprintf_s function</b></a>
Synopsis
string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
example, if the entire format string was L"%%n".
-[<a name="#p628" href="p628">page 628</a>] (<a href="#Contents">Contents</a>)
+[<a name="p628" href="#p628">page 628</a>] (<a href="#Contents">Contents</a>)
Runtime-constraints
2 Neither stream nor format shall be a null pointer. Any argument indirected though in
string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
example, if the entire format string was L"%%n".
-[<a name="#p629" href="p629">page 629</a>] (<a href="#Contents">Contents</a>)
+[<a name="p629" href="#p629">page 629</a>] (<a href="#Contents">Contents</a>)
3 If there is a runtime-constraint violation, then if s is not a null pointer and n is greater
than zero and less than RSIZE_MAX, then the vsnwprintf_s function sets s[0] to
string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
example, if the entire format string was L"%%n".
-[<a name="#p630" href="p630">page 630</a>] (<a href="#Contents">Contents</a>)
+[<a name="p630" href="#p630">page 630</a>] (<a href="#Contents">Contents</a>)
Description
4 The vswprintf_s function is equivalent to the vswprintf function except for the
424) As the functions vfwscanf_s, vwscanf_s, and vswscanf_s invoke the va_arg macro, the
value of arg after the return is indeterminate.
-[<a name="#p631" href="p631">page 631</a>] (<a href="#Contents">Contents</a>)
+[<a name="p631" href="#p631">page 631</a>] (<a href="#Contents">Contents</a>)
Returns
5 The vswscanf_s function returns the value of the macro EOF if an input failure occurs
string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
example, if the entire format string was L"%%n".
-[<a name="#p632" href="p632">page 632</a>] (<a href="#Contents">Contents</a>)
+[<a name="p632" href="#p632">page 632</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.9.1.12" href="#K.3.9.1.12"><b> K.3.9.1.12 The vwscanf_s function</b></a>
Synopsis
string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
example, if the entire format string was L"%%n".
-[<a name="#p633" href="p633">page 633</a>] (<a href="#Contents">Contents</a>)
+[<a name="p633" href="#p633">page 633</a>] (<a href="#Contents">Contents</a>)
width, or precision) shall not appear in the wide string pointed to by format. Any
argument to wprintf_s corresponding to a %s specifier shall not be a null pointer.
-[<a name="#p634" href="p634">page 634</a>] (<a href="#Contents">Contents</a>)
+[<a name="p634" href="#p634">page 634</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.9.2" href="#K.3.9.2"><b> K.3.9.2 General wide string utilities</b></a>
<a name="K.3.9.2.1" href="#K.3.9.2.1"><b> K.3.9.2.1 Wide string copying functions</b></a>
429) A zero return value implies that all of the requested wide characters from the string pointed to by s2
fit within the array pointed to by s1 and that the result in s1 is null terminated.
-[<a name="#p635" href="p635">page 635</a>] (<a href="#Contents">Contents</a>)
+[<a name="p635" href="#p635">page 635</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.9.2.1.2" href="#K.3.9.2.1.2"><b> K.3.9.2.1.2 The wcsncpy_s function</b></a>
Synopsis
431) A zero return value implies that all of the requested wide characters from the string pointed to by s2
fit within the array pointed to by s1 and that the result in s1 is null terminated.
-[<a name="#p636" href="p636">page 636</a>] (<a href="#Contents">Contents</a>)
+[<a name="p636" href="#p636">page 636</a>] (<a href="#Contents">Contents</a>)
#define __STDC_WANT_LIB_EXT1__ 1
#include <a href="#7.28"><wchar.h></a>
-[<a name="#p637" href="p637">page 637</a>] (<a href="#Contents">Contents</a>)
+[<a name="p637" href="#p637">page 637</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.9.2.1.4" href="#K.3.9.2.1.4"><b> K.3.9.2.1.4 The wmemmove_s function</b></a>
Synopsis
s1max shall not equal zero. m shall not equal zero.432) m shall be greater than
wcsnlen_s(s2, m). Copying shall not take place between objects that overlap.
-[<a name="#p638" href="p638">page 638</a>] (<a href="#Contents">Contents</a>)
+[<a name="p638" href="#p638">page 638</a>] (<a href="#Contents">Contents</a>)
4 If there is a runtime-constraint violation, then if s1 is not a null pointer and s1max is
greater than zero and not greater than RSIZE_MAX, then wcscat_s sets s1[0] to the
s2 were appended to the wide string pointed to by s1 and that the result in s1 is null terminated.
435) Zero means that s1 was not null terminated upon entry to wcsncat_s.
-[<a name="#p639" href="p639">page 639</a>] (<a href="#Contents">Contents</a>)
+[<a name="p639" href="#p639">page 639</a>] (<a href="#Contents">Contents</a>)
11 If there is a runtime-constraint violation, then if s1 is not a null pointer and s1max is
greater than zero and not greater than RSIZE_MAX, then wcsncat_s sets s1[0] to the
437) A zero return value implies that all of the requested wide characters from the wide string pointed to by
s2 were appended to the wide string pointed to by s1 and that the result in s1 is null terminated.
-[<a name="#p640" href="p640">page 640</a>] (<a href="#Contents">Contents</a>)
+[<a name="p640" href="#p640">page 640</a>] (<a href="#Contents">Contents</a>)
<a name="K.3.9.2.3" href="#K.3.9.2.3"><b> K.3.9.2.3 Wide string search functions</b></a>
<a name="K.3.9.2.3.1" href="#K.3.9.2.3.1"><b> K.3.9.2.3.1 The wcstok_s function</b></a>
the start of the first token.
-[<a name="#p641" href="p641">page 641</a>] (<a href="#Contents">Contents</a>)
+[<a name="p641" href="#p641">page 641</a>] (<a href="#Contents">Contents</a>)
7 The wcstok_s function then searches from there for the first wide character in s1 that
is contained in the current separator wide string. If no such wide character is found, the
the terminating null wide character. If there is no null wide character in the first
maxsize wide characters of s then wcsnlen_s returns maxsize. At most the first
-[<a name="#p642" href="p642">page 642</a>] (<a href="#Contents">Contents</a>)
+[<a name="p642" href="#p642">page 642</a>] (<a href="#Contents">Contents</a>)
maxsize wide characters of s shall be accessed by wcsnlen_s.
<a name="K.3.9.3" href="#K.3.9.3"><b> K.3.9.3 Extended multibyte/wide character conversion utilities</b></a>
along with the values returned for a null pointer or an unterminated wide string argument make
wcsnlen_s useful in algorithms that gracefully handle such exceptional data.
-[<a name="#p643" href="p643">page 643</a>] (<a href="#Contents">Contents</a>)
+[<a name="p643" href="#p643">page 643</a>] (<a href="#Contents">Contents</a>)
7 If wc does not correspond to a valid multibyte character, an encoding error occurs: the
wcrtomb_s function stores the value (size_t)(-1) into *retval and the
continues up to and including a terminating null character, which is also stored.
Conversion stops earlier in two cases: when a sequence of bytes is encountered that does
not form a valid multibyte character, or (if dst is not a null pointer) when len wide
-[<a name="#p644" href="p644">page 644</a>] (<a href="#Contents">Contents</a>)
+[<a name="p644" href="#p644">page 644</a>] (<a href="#Contents">Contents</a>)
characters have been stored into the array pointed to by dst.439) If dst is not a null
pointer and no null wide character was stored into the array pointed to by dst, then
440) This allows an implementation to attempt converting the multibyte string before discovering a
terminating null character did not occur where required.
-[<a name="#p645" href="p645">page 645</a>] (<a href="#Contents">Contents</a>)
+[<a name="p645" href="#p645">page 645</a>] (<a href="#Contents">Contents</a>)
Runtime-constraints
12 None of retval, src, *src, or ps shall be null pointers. If dst is not a null pointer,
the conversion stops before a terminating null wide character has been reached, the result will be null
terminated, but might not end in the initial shift state.
-[<a name="#p646" href="p646">page 646</a>] (<a href="#Contents">Contents</a>)
+[<a name="p646" href="#p646">page 646</a>] (<a href="#Contents">Contents</a>)
16 Regardless of whether dst is or is not a null pointer, if the input conversion encounters a
wide character that does not correspond to a valid multibyte character, an encoding error
442) When len is not less than dstmax, the implementation might fill the array before discovering a
runtime-constraint violation.
-[<a name="#p647" href="p647">page 647</a>] (<a href="#Contents">Contents</a>)
+[<a name="p647" href="#p647">page 647</a>] (<a href="#Contents">Contents</a>)
<a name="L" href="#L"><b> Annex L</b></a>
(normative)
443) Implementations that do not define __STDC_ANALYZABLE__ are not required to conform to these
specifications.
-[<a name="#p648" href="p648">page 648</a>] (<a href="#Contents">Contents</a>)
+[<a name="p648" href="#p648">page 648</a>] (<a href="#Contents">Contents</a>)
<a name="L.3" href="#L.3"><b> L.3 Requirements</b></a>
1 If the program performs a trap (<a href="#3.19.5">3.19.5</a>), the implementation is permitted to invoke a
-[<a name="#p649" href="p649">page 649</a>] (<a href="#Contents">Contents</a>)
+[<a name="p649" href="#p649">page 649</a>] (<a href="#Contents">Contents</a>)
<a name="Bibliography" href="#Bibliography"><b> Bibliography</b></a>
-[<a name="#p650" href="p650">page 650</a>] (<a href="#Contents">Contents</a>)
+[<a name="p650" href="#p650">page 650</a>] (<a href="#Contents">Contents</a>)
20. ISO/IEC 9945-2:1993, Information technology -- Portable Operating System
Interface (POSIX) -- Part 2: Shell and Utilities.
arithmetic -- Part 1: Integer and floating point arithmetic.
-[<a name="#p651" href="p651">page 651</a>] (<a href="#Contents">Contents</a>)
+[<a name="p651" href="#p651">page 651</a>] (<a href="#Contents">Contents</a>)
38. ISO/IEC TR 19769:2004, Information technology -- Programming languages,
their environments and system software interfaces -- Extensions for the
-[<a name="#p652" href="p652">page 652</a>] (<a href="#Contents">Contents</a>)
+[<a name="p652" href="#p652">page 652</a>] (<a href="#Contents">Contents</a>)
<a name="Index" href="#Index"><b>Index</b></a>
++ (postfix increment operator), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.4">6.5.2.4</a> <a href="#7.18"><stdbool.h></a> header, <a href="#4">4</a>, <a href="#7.18">7.18</a>, <a href="#7.30.7">7.30.7</a>, <a href="#H">H</a>
++ (prefix increment operator), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3.1">6.5.3.1</a> <a href="#7.19"><stddef.h></a> header, <a href="#4">4</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.3.2.3">6.3.2.3</a>, <a href="#6.4.4.4">6.4.4.4</a>,
+= (addition assignment operator), <a href="#6.5.16.2">6.5.16.2</a>
-[<a name="#p653" href="p653">page 653</a>] (<a href="#Contents">Contents</a>)
+[<a name="p653" href="#p653">page 653</a>] (<a href="#Contents">Contents</a>)
<a href="#6.4.5">6.4.5</a>, <a href="#6.5.3.4">6.5.3.4</a>, <a href="#6.5.6">6.5.6</a>, <a href="#7.19">7.19</a>, <a href="#K.3.3">K.3.3</a> \x hexadecimal digits (hexadecimal-character
<a href="#7.20"><stdint.h></a> header, <a href="#4">4</a>, <a href="#5.2.4.2">5.2.4.2</a>, <a href="#6.10.1">6.10.1</a>, <a href="#7.8">7.8</a>, escape sequence), <a href="#6.4.4.4">6.4.4.4</a>
\v (vertical-tab escape sequence), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, _Noreturn, <a href="#6.7.4">6.7.4</a>
<a href="#7.4.1.10">7.4.1.10</a> _Pragma operator, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.10.9">6.10.9</a>
-[<a name="#p654" href="p654">page 654</a>] (<a href="#Contents">Contents</a>)
+[<a name="p654" href="#p654">page 654</a>] (<a href="#Contents">Contents</a>)
_Static_assert, <a href="#6.7.10">6.7.10</a>, <a href="#7.2">7.2</a> allocated storage, order and contiguity, <a href="#7.22.3">7.22.3</a>
_Thread_local storage-class specifier, <a href="#6.2.4">6.2.4</a>, and macro, <a href="#7.9">7.9</a>
alignment specifier, <a href="#6.7.5">6.7.5</a> asin type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
alignof operator, <a href="#6.5.3">6.5.3</a>, <a href="#6.5.3.4">6.5.3.4</a> asinh functions, <a href="#7.12.5.2">7.12.5.2</a>, <a href="#F.10.2.2">F.10.2.2</a>
-[<a name="#p655" href="p655">page 655</a>] (<a href="#Contents">Contents</a>)
+[<a name="p655" href="#p655">page 655</a>] (<a href="#Contents">Contents</a>)
asinh type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> atomic_is_lock_free generic function,
asm keyword, <a href="#J.5.10">J.5.10</a> <a href="#7.17.5.1">7.17.5.1</a>
atomic_init generic function, <a href="#7.17.2.2">7.17.2.2</a> brackets operator ([ ]), <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a>
ATOMIC_INT_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a> brackets punctuator ([ ]), <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.7.9">6.7.9</a>
-[<a name="#p656" href="p656">page 656</a>] (<a href="#Contents">Contents</a>)
+[<a name="p656" href="#p656">page 656</a>] (<a href="#Contents">Contents</a>)
branch cuts, <a href="#7.3.3">7.3.3</a> type-generic macro for, <a href="#7.24">7.24</a>
break statement, <a href="#6.8.6.3">6.8.6.3</a> ccosh functions, <a href="#7.3.6.4">7.3.6.4</a>, <a href="#G.6.2.4">G.6.2.4</a>
cbrt type-generic macro, <a href="#7.24">7.24</a> CLOCKS_PER_SEC macro, <a href="#7.26.1">7.26.1</a>, <a href="#7.26.2.1">7.26.2.1</a>
ccos functions, <a href="#7.3.5.4">7.3.5.4</a>, <a href="#G.6">G.6</a> clog functions, <a href="#7.3.7.2">7.3.7.2</a>, <a href="#G.6.3.2">G.6.3.2</a>
-[<a name="#p657" href="p657">page 657</a>] (<a href="#Contents">Contents</a>)
+[<a name="p657" href="#p657">page 657</a>] (<a href="#Contents">Contents</a>)
type-generic macro for, <a href="#7.24">7.24</a> string, <a href="#7.23.3">7.23.3</a>, <a href="#K.3.7.2">K.3.7.2</a>
clog10 function, <a href="#7.30.1">7.30.1</a> wide string, <a href="#7.28.4.3">7.28.4.3</a>, <a href="#K.3.9.2.2">K.3.9.2.2</a>
compound-literal operator (( ){ }), <a href="#6.5.2.5">6.5.2.5</a> imaginary and complex, <a href="#G.4.3">G.4.3</a>
concatenation functions implicit, <a href="#6.3">6.3</a>
-[<a name="#p658" href="p658">page 658</a>] (<a href="#Contents">Contents</a>)
+[<a name="p658" href="#p658">page 658</a>] (<a href="#Contents">Contents</a>)
lvalues, <a href="#6.3.2.1">6.3.2.1</a> csinh functions, <a href="#7.3.6.5">7.3.6.5</a>, <a href="#G.6.2.5">G.6.2.5</a>
pointer, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.3.2.3">6.3.2.3</a> type-generic macro for, <a href="#7.24">7.24</a>
csin functions, <a href="#7.3.5.5">7.3.5.5</a>, <a href="#G.6">G.6</a> default argument promotions, <a href="#6.5.2.2">6.5.2.2</a>
type-generic macro for, <a href="#7.24">7.24</a> default initialization, <a href="#6.7.9">6.7.9</a>
-[<a name="#p659" href="p659">page 659</a>] (<a href="#Contents">Contents</a>)
+[<a name="p659" href="#p659">page 659</a>] (<a href="#Contents">Contents</a>)
default label, <a href="#6.8.1">6.8.1</a>, <a href="#6.8.4.2">6.8.4.2</a> elif preprocessing directive, <a href="#6.10.1">6.10.1</a>
define preprocessing directive, <a href="#6.10.3">6.10.3</a> ellipsis punctuator (...), <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.10.3">6.10.3</a>
see also encoding error <a href="#7.22.1.3">7.22.1.3</a>, <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>, see
element type, <a href="#6.2.5">6.2.5</a> also range error, pole error
-[<a name="#p660" href="p660">page 660</a>] (<a href="#Contents">Contents</a>)
+[<a name="p660" href="#p660">page 660</a>] (<a href="#Contents">Contents</a>)
erf functions, <a href="#7.12.8.1">7.12.8.1</a>, <a href="#F.10.5.1">F.10.5.1</a> exp2 functions, <a href="#7.12.6.2">7.12.6.2</a>, <a href="#F.10.3.2">F.10.3.2</a>
erf type-generic macro, <a href="#7.24">7.24</a> exp2 type-generic macro, <a href="#7.24">7.24</a>
exp functions, <a href="#7.12.6.1">7.12.6.1</a>, <a href="#F.10.3.1">F.10.3.1</a> FE_INVALID macro, <a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a>
exp type-generic macro, <a href="#7.24">7.24</a> FE_OVERFLOW macro, <a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a>
-[<a name="#p661" href="p661">page 661</a>] (<a href="#Contents">Contents</a>)
+[<a name="p661" href="#p661">page 661</a>] (<a href="#Contents">Contents</a>)
FE_TONEAREST macro, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a> float _Complex type conversion, <a href="#6.3.1.6">6.3.1.6</a>,
FE_TOWARDZERO macro, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a> <a href="#6.3.1.7">6.3.1.7</a>, <a href="#6.3.1.8">6.3.1.8</a>
flexible array member, <a href="#6.7.2.1">6.7.2.1</a> fmod functions, <a href="#7.12.10.1">7.12.10.1</a>, <a href="#F.10.7.1">F.10.7.1</a>
float _Complex type, <a href="#6.2.5">6.2.5</a> fmod type-generic macro, <a href="#7.24">7.24</a>
-[<a name="#p662" href="p662">page 662</a>] (<a href="#Contents">Contents</a>)
+[<a name="p662" href="#p662">page 662</a>] (<a href="#Contents">Contents</a>)
fopen function, <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.5.4">7.21.5.4</a>, <a href="#K.3.5.2.1">K.3.5.2.1</a> <a href="#K.3.5.3.7">K.3.5.3.7</a>, <a href="#K.3.5.3.9">K.3.5.3.9</a>
FOPEN_MAX macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.4.3">7.21.4.3</a>, fseek function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.7.10">7.21.7.10</a>,
<a href="#7.21.6.4">7.21.6.4</a>, <a href="#7.21.6.7">7.21.6.7</a>, <a href="#7.21.6.9">7.21.6.9</a>, <a href="#F.3">F.3</a>, <a href="#K.3.5.3.2">K.3.5.3.2</a> <a href="#K.3.9.1.7">K.3.9.1.7</a>, <a href="#K.3.9.1.14">K.3.9.1.14</a>
fscanf_s function, <a href="#K.3.5.3.2">K.3.5.3.2</a>, <a href="#K.3.5.3.4">K.3.5.3.4</a>,
-[<a name="#p663" href="p663">page 663</a>] (<a href="#Contents">Contents</a>)
+[<a name="p663" href="#p663">page 663</a>] (<a href="#Contents">Contents</a>)
gamma functions, <a href="#7.12.8">7.12.8</a>, <a href="#F.10.5">F.10.5</a> name spaces, <a href="#6.2.3">6.2.3</a>
general utilities, <a href="#7.22">7.22</a>, <a href="#K.3.6">K.3.6</a> reserved, <a href="#6.4.1">6.4.1</a>, <a href="#7.1.3">7.1.3</a>, <a href="#K.3.1.2">K.3.1.2</a>
linkage, see linkage indirection operator (*), <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a>
maximum length, <a href="#6.4.2.1">6.4.2.1</a> inequality operator (!=), <a href="#6.5.9">6.5.9</a>
-[<a name="#p664" href="p664">page 664</a>] (<a href="#Contents">Contents</a>)
+[<a name="p664" href="#p664">page 664</a>] (<a href="#Contents">Contents</a>)
infinitary, <a href="#7.12.1">7.12.1</a> extended, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.4.4.1">6.4.4.1</a>, <a href="#7.20">7.20</a>
INFINITY macro, <a href="#7.3.9.5">7.3.9.5</a>, <a href="#7.12">7.12</a>, <a href="#F.2.1">F.2.1</a> inter-thread happens before, <a href="#5.1.2.4">5.1.2.4</a>
<a href="#F.3">F.3</a>, <a href="#F.4">F.4</a> <a href="#7.4.1.11">7.4.1.11</a>
integer types, <a href="#6.2.5">6.2.5</a>, <a href="#7.20">7.20</a> isspace function, <a href="#7.4.1.2">7.4.1.2</a>, <a href="#7.4.1.7">7.4.1.7</a>, <a href="#7.4.1.9">7.4.1.9</a>,
-[<a name="#p665" href="p665">page 665</a>] (<a href="#Contents">Contents</a>)
+[<a name="p665" href="#p665">page 665</a>] (<a href="#Contents">Contents</a>)
<a href="#7.4.1.10">7.4.1.10</a>, <a href="#7.4.1.11">7.4.1.11</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.22.1.3">7.22.1.3</a>, LC_ALL macro, <a href="#7.11">7.11</a>, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.11.2.1">7.11.2.1</a>
<a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.2.2">7.28.2.2</a> LC_COLLATE macro, <a href="#7.11">7.11</a>, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.23.4.3">7.23.4.3</a>,
syntax summary, <a href="#A">A</a> lifetime, <a href="#6.2.4">6.2.4</a>
Latin alphabet, <a href="#5.2.1">5.2.1</a>, <a href="#6.4.2.1">6.4.2.1</a> limits
-[<a name="#p666" href="p666">page 666</a>] (<a href="#Contents">Contents</a>)
+[<a name="p666" href="#p666">page 666</a>] (<a href="#Contents">Contents</a>)
environmental, see environmental limits <a href="#6.3.1.6">6.3.1.6</a>, <a href="#6.3.1.7">6.3.1.7</a>, <a href="#6.3.1.8">6.3.1.8</a>
implementation, see implementation limits long double _Imaginary type, <a href="#G.2">G.2</a>
long double _Complex type, <a href="#6.2.5">6.2.5</a> manipulation functions
long double _Complex type conversion, complex, <a href="#7.3.9">7.3.9</a>
-[<a name="#p667" href="p667">page 667</a>] (<a href="#Contents">Contents</a>)
+[<a name="p667" href="#p667">page 667</a>] (<a href="#Contents">Contents</a>)
real, <a href="#7.12.11">7.12.11</a>, <a href="#F.10.8">F.10.8</a> modf functions, <a href="#7.12.6.12">7.12.6.12</a>, <a href="#F.10.3.12">F.10.3.12</a>
matching failure, <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.2.8">7.28.2.8</a>, <a href="#7.28.2.10">7.28.2.10</a>, modifiable lvalue, <a href="#6.3.2.1">6.3.2.1</a>
wide string, <a href="#7.28.4.6">7.28.4.6</a>, <a href="#K.3.9.2.4">K.3.9.2.4</a> <a href="#F.10.6.3">F.10.6.3</a>
mktime function, <a href="#7.26.2.3">7.26.2.3</a> nearbyint type-generic macro, <a href="#7.24">7.24</a>
-[<a name="#p668" href="p668">page 668</a>] (<a href="#Contents">Contents</a>)
+[<a name="p668" href="#p668">page 668</a>] (<a href="#Contents">Contents</a>)
nearest integer functions, <a href="#7.12.9">7.12.9</a>, <a href="#F.10.6">F.10.6</a> operating system, <a href="#5.1.2.1">5.1.2.1</a>, <a href="#7.22.4.8">7.22.4.8</a>
negation operator (!), <a href="#6.5.3.3">6.5.3.3</a> operations on files, <a href="#7.21.4">7.21.4</a>, <a href="#K.3.5.1">K.3.5.1</a>
ones' complement, <a href="#6.2.6.2">6.2.6.2</a> parenthesized expression, <a href="#6.5.1">6.5.1</a>
operand, <a href="#6.4.6">6.4.6</a>, <a href="#6.5">6.5</a> parse state, <a href="#7.21.2">7.21.2</a>
-[<a name="#p669" href="p669">page 669</a>] (<a href="#Contents">Contents</a>)
+[<a name="p669" href="#p669">page 669</a>] (<a href="#Contents">Contents</a>)
perform a trap, <a href="#3.19.5">3.19.5</a> preprocessor, <a href="#6.10">6.10</a>
permitted form of initializer, <a href="#6.6">6.6</a> PRIcFASTN macros, <a href="#7.8.1">7.8.1</a>
preprocessing tokens, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.4">6.4</a>, <a href="#6.10">6.10</a> raise function, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a>, <a href="#7.14.2.1">7.14.2.1</a>, <a href="#7.22.4.1">7.22.4.1</a>
preprocessing translation unit, <a href="#5.1.1.1">5.1.1.1</a> rand function, <a href="#7.22">7.22</a>, <a href="#7.22.2.1">7.22.2.1</a>, <a href="#7.22.2.2">7.22.2.2</a>
-[<a name="#p670" href="p670">page 670</a>] (<a href="#Contents">Contents</a>)
+[<a name="p670" href="#p670">page 670</a>] (<a href="#Contents">Contents</a>)
RAND_MAX macro, <a href="#7.22">7.22</a>, <a href="#7.22.2.1">7.22.2.1</a> restrict-qualified type, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.3">6.7.3</a>
range return statement, <a href="#6.8.6.4">6.8.6.4</a>, <a href="#F.6">F.6</a>
restore calling environment function, <a href="#7.13.2">7.13.2</a> utility, <a href="#7.22.5">7.22.5</a>, <a href="#K.3.6.3">K.3.6.3</a>
restrict type qualifier, <a href="#6.7.3">6.7.3</a>, <a href="#6.7.3.1">6.7.3.1</a> wide string, <a href="#7.28.4.5">7.28.4.5</a>, <a href="#K.3.9.2.3">K.3.9.2.3</a>
-[<a name="#p671" href="p671">page 671</a>] (<a href="#Contents">Contents</a>)
+[<a name="p671" href="#p671">page 671</a>] (<a href="#Contents">Contents</a>)
SEEK_CUR macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.9.2">7.21.9.2</a> sign and magnitude, <a href="#6.2.6.2">6.2.6.2</a>
SEEK_END macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.9.2">7.21.9.2</a> sign bit, <a href="#6.2.6.2">6.2.6.2</a>
SIGILL macro, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a> sprintf function, <a href="#7.21.6.6">7.21.6.6</a>, <a href="#7.21.6.13">7.21.6.13</a>, <a href="#K.3.5.3.6">K.3.5.3.6</a>
SIGINT macro, <a href="#7.14">7.14</a> sprintf_s function, <a href="#K.3.5.3.5">K.3.5.3.5</a>, <a href="#K.3.5.3.6">K.3.5.3.6</a>
-[<a name="#p672" href="p672">page 672</a>] (<a href="#Contents">Contents</a>)
+[<a name="p672" href="#p672">page 672</a>] (<a href="#Contents">Contents</a>)
sqrt functions, <a href="#7.12.7.5">7.12.7.5</a>, <a href="#F.3">F.3</a>, <a href="#F.10.4.5">F.10.4.5</a> do, <a href="#6.8.5.2">6.8.5.2</a>
sqrt type-generic macro, <a href="#7.24">7.24</a> else, <a href="#6.8.4.1">6.8.4.1</a>
compound, <a href="#6.8.2">6.8.2</a> strcpy_s function, <a href="#K.3.7.1.3">K.3.7.1.3</a>
continue, <a href="#6.8.6.2">6.8.6.2</a> strcspn function, <a href="#7.23.5.3">7.23.5.3</a>
-[<a name="#p673" href="p673">page 673</a>] (<a href="#Contents">Contents</a>)
+[<a name="p673" href="#p673">page 673</a>] (<a href="#Contents">Contents</a>)
streams, <a href="#7.21.2">7.21.2</a>, <a href="#7.22.4.4">7.22.4.4</a> <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.2.2">7.28.2.2</a>
fully buffered, <a href="#7.21.3">7.21.3</a> strtoull function, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.22.1.2">7.22.1.2</a>, <a href="#7.22.1.4">7.22.1.4</a>
strtoll function, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.22.1.2">7.22.1.2</a>, <a href="#7.22.1.4">7.22.1.4</a> tan type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
strtoul function, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.22.1.2">7.22.1.2</a>, tanh functions, <a href="#7.12.5.6">7.12.5.6</a>, <a href="#F.10.2.6">F.10.2.6</a>
-[<a name="#p674" href="p674">page 674</a>] (<a href="#Contents">Contents</a>)
+[<a name="p674" href="#p674">page 674</a>] (<a href="#Contents">Contents</a>)
tanh type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> toupper function, <a href="#7.4.2.2">7.4.2.2</a>
temporary lifetime, <a href="#6.2.4">6.2.4</a> towctrans function, <a href="#7.29.3.2.1">7.29.3.2.1</a>, <a href="#7.29.3.2.2">7.29.3.2.2</a>
token pasting, <a href="#6.10.3.3">6.10.3.3</a> restrict qualified, <a href="#6.7.3">6.7.3</a>
tolower function, <a href="#7.4.2.1">7.4.2.1</a> volatile qualified, <a href="#6.7.3">6.7.3</a>
-[<a name="#p675" href="p675">page 675</a>] (<a href="#Contents">Contents</a>)
+[<a name="p675" href="#p675">page 675</a>] (<a href="#Contents">Contents</a>)
uchar.h header, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#7.27">7.27</a> universal character name, <a href="#6.4.3">6.4.3</a>
UCHAR_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a> unnormalized floating-point numbers, <a href="#5.2.4.2.2">5.2.4.2.2</a>
tag, <a href="#6.2.3">6.2.3</a>, <a href="#6.7.2.3">6.7.2.3</a> value, <a href="#3.19">3.19</a>
type, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2.1">6.7.2.1</a> value bits, <a href="#6.2.6.2">6.2.6.2</a>
-[<a name="#p676" href="p676">page 676</a>] (<a href="#Contents">Contents</a>)
+[<a name="p676" href="#p676">page 676</a>] (<a href="#Contents">Contents</a>)
variable arguments, <a href="#6.10.3">6.10.3</a>, <a href="#7.16">7.16</a> vswscanf function, <a href="#7.28.2.8">7.28.2.8</a>
variable arguments header, <a href="#7.16">7.16</a> vswscanf_s function, <a href="#K.3.9.1.10">K.3.9.1.10</a>
<a href="#K.3.9.1.9">K.3.9.1.9</a> wcstold function, <a href="#7.28.4.1.1">7.28.4.1.1</a>
vswprintf_s function, <a href="#K.3.9.1.8">K.3.9.1.8</a>, <a href="#K.3.9.1.9">K.3.9.1.9</a> wcstoll function, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>
-[<a name="#p677" href="p677">page 677</a>] (<a href="#Contents">Contents</a>)
+[<a name="p677" href="#p677">page 677</a>] (<a href="#Contents">Contents</a>)
wcstombs function, <a href="#7.22.8.2">7.22.8.2</a>, <a href="#7.28.6.4">7.28.6.4</a> <a href="#7.29.1">7.29.1</a>
wcstombs_s function, <a href="#K.3.6.5.2">K.3.6.5.2</a> wmemchr function, <a href="#7.28.4.5.8">7.28.4.5.8</a>
WINT_MIN macro, <a href="#7.20.3">7.20.3</a>
wint_t type, <a href="#7.20.3">7.20.3</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.1">7.28.1</a>, <a href="#7.28.2.1">7.28.2.1</a>,
-[<a name="#p678" href="p678">page 678</a>] (<a href="#Contents">Contents</a>)
+[<a name="p678" href="#p678">page 678</a>] (<a href="#Contents">Contents</a>)
</pre></body></html>