<h3><a name="3.1" href="#3.1">3.1</a></h3>
<p><!--para 1 -->
- access
+<b> access</b><br>
<execution-time action> to read or modify the value of an object
<p><!--para 2 -->
NOTE 1 Where only one of these two actions is meant, ''read'' or ''modify'' is used.
<h3><a name="3.2" href="#3.2">3.2</a></h3>
<p><!--para 1 -->
- alignment
+<b> alignment</b><br>
requirement that objects of a particular type be located on storage boundaries with
addresses that are particular multiples of a byte address
<h3><a name="3.3" href="#3.3">3.3</a></h3>
<p><!--para 1 -->
- argument
+<b> argument</b><br>
actual argument
actual parameter (deprecated)
expression in the comma-separated list bounded by the parentheses in a function call
<h3><a name="3.4" href="#3.4">3.4</a></h3>
<p><!--para 1 -->
- behavior
+<b> behavior</b><br>
external appearance or action
<h4><a name="3.4.1" href="#3.4.1">3.4.1</a></h4>
<p><!--para 1 -->
- implementation-defined behavior
+<b> implementation-defined behavior</b><br>
unspecified behavior where each implementation documents how the choice is made
<p><!--para 2 -->
EXAMPLE An example of implementation-defined behavior is the propagation of the high-order bit
<h4><a name="3.4.2" href="#3.4.2">3.4.2</a></h4>
<p><!--para 1 -->
- locale-specific behavior
+<b> locale-specific behavior</b><br>
behavior that depends on local conventions of nationality, culture, and language that each
implementation documents
<!--page 22 -->
<h4><a name="3.4.3" href="#3.4.3">3.4.3</a></h4>
<p><!--para 1 -->
- undefined behavior
+<b> undefined behavior</b><br>
behavior, upon use of a nonportable or erroneous program construct or of erroneous data,
for which this International Standard imposes no requirements
<p><!--para 2 -->
<h4><a name="3.4.4" href="#3.4.4">3.4.4</a></h4>
<p><!--para 1 -->
- unspecified behavior
+<b> unspecified behavior</b><br>
use of an unspecified value, or other behavior where this International Standard provides
two or more possibilities and imposes no further requirements on which is chosen in any
instance
<h3><a name="3.5" href="#3.5">3.5</a></h3>
<p><!--para 1 -->
- bit
+<b> bit</b><br>
unit of data storage in the execution environment large enough to hold an object that may
have one of two values
<p><!--para 2 -->
<h3><a name="3.6" href="#3.6">3.6</a></h3>
<p><!--para 1 -->
- byte
+<b> byte</b><br>
addressable unit of data storage large enough to hold any member of the basic character
set of the execution environment
<p><!--para 2 -->
<h3><a name="3.7" href="#3.7">3.7</a></h3>
<p><!--para 1 -->
- character
+<b> character</b><br>
<abstract> member of a set of elements used for the organization, control, or
representation of data
<h4><a name="3.7.1" href="#3.7.1">3.7.1</a></h4>
<p><!--para 1 -->
- character
+<b> character</b><br>
single-byte character
<C> bit representation that fits in a byte
<!--page 23 -->
<h4><a name="3.7.2" href="#3.7.2">3.7.2</a></h4>
<p><!--para 1 -->
- multibyte character
+<b> multibyte character</b><br>
sequence of one or more bytes representing a member of the extended character set of
either the source or the execution environment
<p><!--para 2 -->
<h4><a name="3.7.3" href="#3.7.3">3.7.3</a></h4>
<p><!--para 1 -->
- wide character
+<b> wide character</b><br>
bit representation that fits in an object of type wchar_t, capable of representing any
character in the current locale
<h3><a name="3.8" href="#3.8">3.8</a></h3>
<p><!--para 1 -->
- constraint
+<b> constraint</b><br>
restriction, either syntactic or semantic, by which the exposition of language elements is
to be interpreted
<h3><a name="3.9" href="#3.9">3.9</a></h3>
<p><!--para 1 -->
- correctly rounded result
+<b> correctly rounded result</b><br>
representation in the result format that is nearest in value, subject to the current rounding
mode, to what the result would be given unlimited range and precision
<h3><a name="3.10" href="#3.10">3.10</a></h3>
<p><!--para 1 -->
- diagnostic message
+<b> diagnostic message</b><br>
message belonging to an implementation-defined subset of the implementation's message
output
<h3><a name="3.11" href="#3.11">3.11</a></h3>
<p><!--para 1 -->
- forward reference
+<b> forward reference</b><br>
reference to a later subclause of this International Standard that contains additional
information relevant to this subclause
<h3><a name="3.12" href="#3.12">3.12</a></h3>
<p><!--para 1 -->
- implementation
+<b> implementation</b><br>
particular set of software, running in a particular translation environment under particular
control options, that performs translation of programs for, and supports execution of
functions in, a particular execution environment
<h3><a name="3.13" href="#3.13">3.13</a></h3>
<p><!--para 1 -->
- implementation limit
+<b> implementation limit</b><br>
restriction imposed upon programs by the implementation
<h3><a name="3.14" href="#3.14">3.14</a></h3>
<p><!--para 1 -->
- memory location
+<b> memory location</b><br>
either an object of scalar type, or a maximal sequence of adjacent bit-fields all having
nonzero width
<!--page 24 -->
<h3><a name="3.15" href="#3.15">3.15</a></h3>
<p><!--para 1 -->
- object
+<b> object</b><br>
region of data storage in the execution environment, the contents of which can represent
values
<p><!--para 2 -->
<h3><a name="3.16" href="#3.16">3.16</a></h3>
<p><!--para 1 -->
- parameter
+<b> parameter</b><br>
formal parameter
formal argument (deprecated)
object declared as part of a function declaration or definition that acquires a value on
<h3><a name="3.17" href="#3.17">3.17</a></h3>
<p><!--para 1 -->
- recommended practice
+<b> recommended practice</b><br>
specification that is strongly recommended as being in keeping with the intent of the
standard, but that may be impractical for some implementations
<h3><a name="3.18" href="#3.18">3.18</a></h3>
<p><!--para 1 -->
- runtime-constraint
+<b> runtime-constraint</b><br>
requirement on a program when calling a library function
<p><!--para 2 -->
NOTE 1 Despite the similar terms, a runtime-constraint is not a kind of constraint as defined by <a href="#3.8">3.8</a>, and
<h3><a name="3.19" href="#3.19">3.19</a></h3>
<p><!--para 1 -->
- value
+<b> value</b><br>
precise meaning of the contents of an object when interpreted as having a specific type
<h4><a name="3.19.1" href="#3.19.1">3.19.1</a></h4>
<p><!--para 1 -->
- implementation-defined value
+<b> implementation-defined value</b><br>
unspecified value where each implementation documents how the choice is made
<h4><a name="3.19.2" href="#3.19.2">3.19.2</a></h4>
<p><!--para 1 -->
- indeterminate value
+<b> indeterminate value</b><br>
either an unspecified value or a trap representation
<h4><a name="3.19.3" href="#3.19.3">3.19.3</a></h4>
<p><!--para 1 -->
- unspecified value
+<b> unspecified value</b><br>
valid value of the relevant type where this International Standard imposes no
requirements on which value is chosen in any instance
<p><!--para 2 -->
<h4><a name="3.19.4" href="#3.19.4">3.19.4</a></h4>
<p><!--para 1 -->
- trap representation
+<b> trap representation</b><br>
an object representation that need not represent a value of the object type
<h4><a name="3.19.5" href="#3.19.5">3.19.5</a></h4>
<p><!--para 1 -->
- perform a trap
+<b> perform a trap</b><br>
interrupt execution of the program such that no further operations are performed
<p><!--para 2 -->
NOTE In this International Standard, when the word ''trap'' is not immediately followed by
<h3><a name="3.20" href="#3.20">3.20</a></h3>
<p><!--para 1 -->
- [^ x^]
+<b> [^ x^]</b><br>
ceiling of x: the least integer greater than or equal to x
<p><!--para 2 -->
EXAMPLE [^2.4^] is 3, [^-2.4^] is -2.
<h3><a name="3.21" href="#3.21">3.21</a></h3>
<p><!--para 1 -->
- [_ x_]
+<b> [_ x_]</b><br>
floor of x: the greatest integer less than or equal to x
<p><!--para 2 -->
EXAMPLE [_2.4_] is 2, [_-2.4_] is -3.
DBL_TRUE_MIN 1E-37
LDBL_TRUE_MIN 1E-37
</ul>
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 14 -->
Conversion from (at least) double to decimal with DECIMAL_DIG digits and back
should be the identity function.
include the atomic types.
<p><!--para 28 -->
A pointer to void shall have the same representation and alignment requirements as a
- pointer to a character type.48) Similarly, pointers to qualified or unqualified versions of
+ pointer to a character type.<sup><a href="#note48"><b>48)</b></a></sup> Similarly, pointers to qualified or unqualified versions of
compatible types shall have the same representation and alignment requirements. All
pointers to structure types shall have the same representation and alignment requirements
as each other. All pointers to union types shall have the same representation and
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
to a keyword.
- Implementation limits
+<h6>Implementation limits</h6>
<p><!--para 5 -->
As discussed in <a href="#5.2.4.1">5.2.4.1</a>, an implementation may limit the number of significant initial
characters in an identifier; the limit for an external name (an identifier that has external
conversion of a floating constant shall not raise an exceptional condition or a floating-
point exception at execution time. All floating constants of the same source form<sup><a href="#note75"><b>75)</b></a></sup> shall
convert to the same internal format with the same value.
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 6 -->
The implementation should produce a diagnostic message if a hexadecimal constant
cannot be represented exactly in its evaluation format; the implementation should then
struct-or-union identifier</pre>
occurs other than as part of one of the above forms, and no other declaration of the
identifier as a tag is visible, then it declares an incomplete structure or union type, and
- declares the identifier as the tag of that type.131)
+ declares the identifier as the tag of that type.<sup><a href="#note131"><b>131)</b></a></sup>
<p><!--para 9 -->
If a type specifier of the form
<pre>
function uses the inline definition or the external definition.<sup><a href="#note140"><b>140)</b></a></sup>
<p><!--para 8 -->
A function declared with a _Noreturn function specifier shall not return to its caller.
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 9 -->
The implementation should produce a diagnostic message for a function declared with a
_Noreturn function specifier that appears to be capable of returning to its caller.
then ident has the type specified by the declaration ''T D''. Thus, a declarator in
parentheses is identical to the unparenthesized declarator, but the binding of complicated
declarators may be altered by parentheses.
- Implementation limits
+<h6>Implementation limits</h6>
<p><!--para 7 -->
As discussed in <a href="#5.2.4.1">5.2.4.1</a>, an implementation may limit the number of pointer, array, and
function declarators that modify an arithmetic, structure, union, or void type, either
a default label, control jumps to the labeled statement. If no converted case constant
expression matches and there is no default label, no part of the switch body is
executed.
- Implementation limits
+<h6>Implementation limits</h6>
<p><!--para 6 -->
As discussed in <a href="#5.2.4.1">5.2.4.1</a>, the implementation may limit the number of case values in a
switch statement.
__FILE__ The presumed name of the current source file (a character string literal).<sup><a href="#note177"><b>177)</b></a></sup>
__LINE__ The presumed line number (within the current source file) of the current
<pre>
- source line (an integer constant).177)</pre>
+ source line (an integer constant).<sup><a href="#note177"><b>177)</b></a></sup></pre>
__STDC__ The integer constant 1, intended to indicate a conforming implementation.
__STDC_HOSTED__ The integer constant 1 if the implementation is a hosted
<pre>
The CMPLX macros expand to an expression of the specified complex type, with the real
part having the (converted) value of x and the imaginary part having the (converted)
value of y.
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 3 -->
The resulting expression should be suitable for use as an initializer for an object with
static or thread storage duration, provided both arguments are likewise suitable.
If the return is from a direct invocation, the setjmp macro returns the value zero. If the
return is from a call to the longjmp function, the setjmp macro returns a nonzero
value.
- Environmental limits
+<h6>Environmental limits</h6>
<p><!--para 4 -->
An invocation of the setjmp macro shall appear only in one of the following contexts:
<ul>
in the computation of 42. In the absence of ''relaxed'' operations and read-modify-write operations with
weaker than memory_order_acq_rel ordering, the second requirement has no impact.
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 15 -->
The requirements do not forbid r1 == 42 && r2 == 42 in the following example,
with x and y initially zero:
static type t;</pre>
then the expression &(t.member-designator) evaluates to an address constant. (If the
specified member is a bit-field, the behavior is undefined.)
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 4 -->
The types used for size_t and ptrdiff_t should not have an integer conversion rank
greater than that of signed long int unless the implementation supports objects
value of this mbstate_t object as part of the value of the fpos_t object. A later
successful call to fsetpos using the same stored fpos_t value restores the value of
the associated mbstate_t object as well as the position within the controlled stream.
- Environmental limits
+<h6>Environmental limits</h6>
<p><!--para 7 -->
An implementation shall support text files with lines containing at least 254 characters,
including the terminating new-line character. The value of the macro BUFSIZ shall be at
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
occurs.
- Environmental limits
+<h6>Environmental limits</h6>
<p><!--para 15 -->
The value of FOPEN_MAX shall be at least eight, including the three standard text
streams.
existing file and that will automatically be removed when it is closed or at program
termination. If the program terminates abnormally, whether an open temporary file is
removed is implementation-defined. The file is opened for update with "wb+" mode.
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 3 -->
It should be possible to open at least TMP_MAX temporary files during the lifetime of the
program (this limit may be shared with tmpnam) and there should be no limit on the
function may modify the same object). If the argument is not a null pointer, it is assumed
to point to an array of at least L_tmpnam chars; the tmpnam function writes its result
in that array and returns the argument as its value.
- Environmental limits
+<h6>Environmental limits</h6>
<p><!--para 6 -->
The value of the macro TMP_MAX shall be at least 25.
<p><!--para 11 -->
For a and A conversions, if FLT_RADIX is a power of 2, the value is correctly rounded
to a hexadecimal floating number with the given precision.
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 12 -->
For a and A conversions, if FLT_RADIX is not a power of 2 and the result is not exactly
representable in the given precision, the result should be one of the two adjacent numbers
<p><!--para 14 -->
The fprintf function returns the number of characters transmitted, or a negative value
if an output or encoding error occurred.
- Environmental limits
+<h6>Environmental limits</h6>
<p><!--para 15 -->
The number of characters that can be produced by any single conversion shall be at least
4095.
corresponding argument shall be a pointer to the initial element of an array of
wchar_t large enough to accept the resulting sequence of wide characters.
No null wide character is added.</pre>
- s Matches a sequence of non-white-space characters.279)
+ s Matches a sequence of non-white-space characters.<sup><a href="#note279"><b>279)</b></a></sup>
<pre>
If no l length modifier is present, the corresponding argument shall be a
pointer to the initial element of a character array large enough to accept the
added automatically.</pre>
[ Matches a nonempty sequence of characters from a set of expected characters
<pre>
- (the scanset).279)
+ (the scanset).<sup><a href="#note279"><b>279)</b></a></sup>
If no l length modifier is present, the corresponding argument shall be a
pointer to the initial element of a character array large enough to accept the
sequence and a terminating null character, which will be added automatically.
The vfscanf function is equivalent to fscanf, with the variable argument list
replaced by arg, which shall have been initialized by the va_start macro (and
possibly subsequent va_arg calls). The vfscanf function does not invoke the
- va_end macro.281)
+ va_end macro.<sup><a href="#note281"><b>281)</b></a></sup>
<h6>Returns</h6>
<p><!--para 3 -->
The vfscanf function returns the value of the macro EOF if an input failure occurs
replaced by arg, which shall have been initialized by the va_start macro (and
<!--page 346 -->
possibly subsequent va_arg calls). The vprintf function does not invoke the
- va_end macro.281)
+ va_end macro.<sup><a href="#note281"><b>281)</b></a></sup>
<h6>Returns</h6>
<p><!--para 3 -->
The vprintf function returns the number of characters transmitted, or a negative value
The vscanf function is equivalent to scanf, with the variable argument list replaced
by arg, which shall have been initialized by the va_start macro (and possibly
subsequent va_arg calls). The vscanf function does not invoke the va_end
- macro.281)
+ macro.<sup><a href="#note281"><b>281)</b></a></sup>
<h6>Returns</h6>
<p><!--para 3 -->
The vscanf function returns the value of the macro EOF if an input failure occurs
The vsnprintf function is equivalent to snprintf, with the variable argument list
replaced by arg, which shall have been initialized by the va_start macro (and
possibly subsequent va_arg calls). The vsnprintf function does not invoke the
- va_end macro.281) If copying takes place between objects that overlap, the behavior is
+ va_end macro.<sup><a href="#note281"><b>281)</b></a></sup> If copying takes place between objects that overlap, the behavior is
undefined.
<!--page 347 -->
<h6>Returns</h6>
The vsprintf function is equivalent to sprintf, with the variable argument list
replaced by arg, which shall have been initialized by the va_start macro (and
possibly subsequent va_arg calls). The vsprintf function does not invoke the
- va_end macro.281) If copying takes place between objects that overlap, the behavior is
+ va_end macro.<sup><a href="#note281"><b>281)</b></a></sup> If copying takes place between objects that overlap, the behavior is
undefined.
<h6>Returns</h6>
<p><!--para 3 -->
The vsscanf function is equivalent to sscanf, with the variable argument list
replaced by arg, which shall have been initialized by the va_start macro (and
possibly subsequent va_arg calls). The vsscanf function does not invoke the
- va_end macro.281)
+ va_end macro.<sup><a href="#note281"><b>281)</b></a></sup>
<h6>Returns</h6>
<p><!--para 3 -->
The vsscanf function returns the value of the macro EOF if an input failure occurs
If the subject sequence is empty or does not have the expected form, no conversion is
performed; the value of nptr is stored in the object pointed to by endptr, provided
that endptr is not a null pointer.
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 8 -->
If the subject sequence has the hexadecimal form, FLT_RADIX is not a power of 2, and
the result is not exactly representable, the result should be one of the two numbers in the
<h6>Returns</h6>
<p><!--para 4 -->
The rand function returns a pseudo-random integer.
- Environmental limits
+<h6>Environmental limits</h6>
<p><!--para 5 -->
The value of the RAND_MAX macro shall be at least 32767.
<p><!--para 2 -->
The atexit function registers the function pointed to by func, to be called without
arguments at normal program termination.<sup><a href="#note290"><b>290)</b></a></sup>
- Environmental limits
+<h6>Environmental limits</h6>
<p><!--para 3 -->
The implementation shall support the registration of at least 32 functions.
<h6>Returns</h6>
<p><!--para 2 -->
The at_quick_exit function registers the function pointed to by func, to be called
without arguments should quick_exit be called.<sup><a href="#note291"><b>291)</b></a></sup>
- Environmental limits
+<h6>Environmental limits</h6>
<p><!--para 3 -->
The implementation shall support the registration of at least 32 functions.
<h6>Returns</h6>
If a wide character is encountered that does not correspond to a valid multibyte character,
the wcstombs function returns (size_t)(-1). Otherwise, the wcstombs function
returns the number of bytes modified, not including a terminating null character, if
- any.299)
+ any.<sup><a href="#note299"><b>299)</b></a></sup>
<p><!--para 11 -->
For a and A conversions, if FLT_RADIX is a power of 2, the value is correctly rounded
to a hexadecimal floating number with the given precision.
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 12 -->
For a and A conversions, if FLT_RADIX is not a power of 2 and the result is not exactly
representable in the given precision, the result should be one of the two adjacent numbers
value if an output or encoding error occurred.
<!--page 425 -->
- Environmental limits
+<h6>Environmental limits</h6>
<p><!--para 15 -->
The number of wide characters that can be produced by any single conversion shall be at
least 4095.
The vfwscanf function is equivalent to fwscanf, with the variable argument list
replaced by arg, which shall have been initialized by the va_start macro (and
possibly subsequent va_arg calls). The vfwscanf function does not invoke the
- va_end macro.327)
+ va_end macro.<sup><a href="#note327"><b>327)</b></a></sup>
<h6>Returns</h6>
<p><!--para 3 -->
The vfwscanf function returns the value of the macro EOF if an input failure occurs
The vswprintf function is equivalent to swprintf, with the variable argument list
replaced by arg, which shall have been initialized by the va_start macro (and
possibly subsequent va_arg calls). The vswprintf function does not invoke the
- va_end macro.327)
+ va_end macro.<sup><a href="#note327"><b>327)</b></a></sup>
<h6>Returns</h6>
<p><!--para 3 -->
The vswprintf function returns the number of wide characters written in the array, not
The vswscanf function is equivalent to swscanf, with the variable argument list
replaced by arg, which shall have been initialized by the va_start macro (and
possibly subsequent va_arg calls). The vswscanf function does not invoke the
- va_end macro.327)
+ va_end macro.<sup><a href="#note327"><b>327)</b></a></sup>
<h6>Returns</h6>
<p><!--para 3 -->
The vswscanf function returns the value of the macro EOF if an input failure occurs
The vwprintf function is equivalent to wprintf, with the variable argument list
replaced by arg, which shall have been initialized by the va_start macro (and
possibly subsequent va_arg calls). The vwprintf function does not invoke the
- va_end macro.327)
+ va_end macro.<sup><a href="#note327"><b>327)</b></a></sup>
<h6>Returns</h6>
<p><!--para 3 -->
The vwprintf function returns the number of wide characters transmitted, or a negative
The vwscanf function is equivalent to wscanf, with the variable argument list
replaced by arg, which shall have been initialized by the va_start macro (and
possibly subsequent va_arg calls). The vwscanf function does not invoke the
- va_end macro.327)
+ va_end macro.<sup><a href="#note327"><b>327)</b></a></sup>
<h6>Returns</h6>
<p><!--para 3 -->
The vwscanf function returns the value of the macro EOF if an input failure occurs
If the subject sequence is empty or does not have the expected form, no conversion is
performed; the value of nptr is stored in the object pointed to by endptr, provided
that endptr is not a null pointer.
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 8 -->
If the subject sequence has the hexadecimal form, FLT_RADIX is not a power of 2, and
the result is not exactly representable, the result should be one of the two numbers in the
<p><!--para 2 -->
The iswpunct function tests for any printing wide character that is one of a locale-
specific set of punctuation wide characters for which neither iswspace nor iswalnum
- is true.342)
+ is true.<sup><a href="#note342"><b>342)</b></a></sup>
<h5><a name="7.29.2.1.10" href="#7.29.2.1.10">7.29.2.1.10 The iswspace function</a></h5>
<h6>Synopsis</h6>
<!--page 522 -->
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 2 -->
The long double type should match an IEC 60559 extended format.
A contracted expression is correctly rounded (once) and treats infinities, NaNs, signed
zeros, subnormals, and the rounding directions in a manner consistent with the basic
arithmetic operations covered by IEC 60559.
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 2 -->
A contracted expression should raise floating-point exceptions in a manner generally
consistent with the basic arithmetic operations. *
<li> The rounding precision mode (if supported) is set so that results are not shortened.
<li> Trapping or stopping (if supported) is disabled on all floating-point exceptions.
</ul>
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 2 -->
The implementation should produce a diagnostic message for each translation-time
floating-point exception, other than ''inexact'';<sup><a href="#note352"><b>352)</b></a></sup> the implementation should then
For families of functions, the specifications apply to all of the functions even though only
the principal function is shown. Unless otherwise specified, where the symbol ''(+-)''
occurs in both an argument and the result, the result has the same sign as the argument.
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 13 -->
If a function with one or more NaN arguments returns a NaN result, the result should be
the same as one of the NaN arguments (after possible type conversion), except perhaps
which expands to a value<sup><a href="#note373"><b>373)</b></a></sup> of type size_t. Functions that have parameters of type
rsize_t consider it a runtime-constraint violation if the values of those parameters are
greater than RSIZE_MAX.
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 3 -->
Extremely large object sizes are frequently a sign that an object's size was calculated
incorrectly. For example, negative numbers appear as very large positive numbers when
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
to FILE pointed to by streamptr will be set to a null pointer.
- Recommended practice
+<h6>Recommended practice</h6>
It should be possible to open at least TMP_MAX_S temporary files during the lifetime of
the program (this limit may be shared with tmpnam_s) and there should be no limit on
the number simultaneously open other than this limit and any limit on the number of open
<p><!--para 6 -->
The implementation shall behave as if no library function except tmpnam calls the
tmpnam_s function.<sup><a href="#note375"><b>375)</b></a></sup>
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 7 -->
After a program obtains a file name using the tmpnam_s function and before the
program creates a file with that name, the possibility exists that someone else may create
<p><!--para 9 -->
Otherwise, the tmpnam_s function writes the string in the array pointed to by s and
returns zero.
- Environmental limits
+<h6>Environmental limits</h6>
<p><!--para 10 -->
The value of the macro TMP_MAX_S shall be at least 25.
If end-of-file is encountered and no characters have been read into the array, or if a read
error occurs during the operation, then s[0] is set to the null character, and the other
elements of s take unspecified values.
- Recommended practice
+<h6>Recommended practice</h6>
<p><!--para 6 -->
The fgets function allows properly-written programs to safely process input lines too
long to store in the result array. In general this requires that callers of fgets pay
<li> The character new line.
<li> The null character.
</ol>
- Recommended practice
+<h6>Recommended practice</h6>
The strftime function allows more flexible formatting and supports locale-specific
behavior. If you do not require the exact form of the result string produced by the
asctime_s function, consider using the strftime function instead.
the form of a string. It is equivalent to
<pre>
asctime_s(s, maxsize, localtime_s(timer))</pre>
- Recommended practice
+<h6>Recommended practice</h6>
The strftime function allows more flexible formatting and supports locale-specific
behavior. If you do not require the exact form of the result string produced by the
ctime_s function, consider using the strftime function instead.