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


Reply via email to