Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: minor edits

...

Wiki Markup
<ac:structured-macro ac:name="anchor" ac:schema-version="1" ac:macro-id="489377da4f34bace-0968044f-432345e5-b8efb170-d3d6baa640408ad804e05924"><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 the header <stddef.h> is included in order 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, since because _limit has extern 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. Thus 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.

...