...
Wiki Markup |
---|
<ac:structured-macro ac:name="anchor" ac:schema-version="1" ac:macro-id="7b3a129660d77d13-f584154a-4f4041fd-90489bc3-c8a386eeb78fa0e1d25bc87a"><ac:parameter ac:name="">1</ac:parameter></ac:structured-macro> \[1\] Note that the POSIX ^®^ standard extends the set of identifiers reserved by C99 to include an open-ended set of its own. See section [2.2 Compilation Environment|http://www.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_02] in [\[IEEE Std 1003.1-2008\]|AA. References#IEEE Std 1003.1-2008]. |
...
In this noncompliant code example, the names of the file scope objects _max_limit
and _limit
both begin with an underscore. Since it is static
, the declaration of _max_limit
might seem to be impervious to clashes with names defined by the implementation. However, since because the header <stddef.h>
is included to define size_t
a potential for a name clash exists (note, however, that a conforming compiler may implicitly declare reserved names regardless of whether or not any C standard library header has been explicitly included). In addition, because _limit
has external linkage, it may clash with a symbol with the same name defined in the language runtime library even if such a symbol is not declared in any header. Consequently, it is unsafe to start the name of any file scope identifier with an underscore, even if its linkage limits its visibility to a single translation unit. Common effects of such clashes range from compiler errors, to linker errors, to abnormal program behavior at runtime.
...
In the noncompliant code example below, since because the C standard library header <inttypes.h>
is specified to include <stdint.h>
, the name MAX_SIZE
conflicts with the name of the <stdint.h>
header macro used to denote the upper limit of size_t
. In addition, while the name INTFAST16_LIMIT_MAX
isn't defined by the C standard library, since because it begins with the INT
prefix and ends with the _MAX
suffix it encroaches on the reserved name space (see section 8.26.8 of C99). A typical manifestation of such a clash is a compilation error.
...