Nix wrote: > - All identifiers that begin with an underscore are > always reserved for use as macros and as identifiers > with file scope in both the ordinary and tag name > spaces. > > libspamc falls foul of the second clause; its identifiers should indeed > probably lose the underscore.
No, when the Standard says they are reserved for use as macros and as identifiers with file scope, it means that the compiler implementors cannot use them for other things because they are reserved for uses such as you see in libspamc.c, in which an ordinary user of C uses them as the names of static functions which are visible only in the file (i.e., have file scope). libspamc is using those identifiers exactly as they are supposed to be used. Unless I overlooked any, all of them are declared as static functions with file scope. The Standard gives us the ability to name things that are not visible outside the file with no fear that the name is being used for an incompatible purpose in any included system header. See Section 7.1.3 page 112 "Rationale for International Standard— Programming Languages— C" http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf -- Sidney Markowitz http://www.sidney.com
