[vbox-dev] reserved identifier violation
Jens.Schweikhardt at Sun.COM
Mon Feb 16 00:56:51 PST 2009
Markus Elfring wrote:
> I would like to point out that some places in the source files do not
> fit to the expected naming conventions of the C language standard.
> Would you like to adjust any source code for this detail aspect?
The ISO C Standard essentially divides the identifier namespace in two
categories, which I shall name implementation and application name spaces.
ISO 9899:1999 7.1.3 details the implementation name space. Anything not
in the implementation namespace is in the application name space.
Any library (or API) provider faces a dilemma because he must invade one
of the two namespaces. VirtualBox chose to not invade the application
name space where practical. This means use of underscores as prefix in
places where the application writer is not supposed to use such
identifiers. While this is technically causing undefined behavior, it is
a conscious decision because we support compilation of VirtualBox only
on a very limited number of implementations, the implementation
namespace of which is known to us. The __BEGIN_DECLS macro is a good
example for this. The application writer is forbidden to use that macro,
so will never conflict with us. If, however, we had used BEGIN_DECLS we
might conflict with the app writer's BEGIN_DECLS, which he has every
right to define according to ISO C99.
As for header include guards, using __FOO_H is a common way to not
invade the app name space (see libvirt or the python binding for XPCOM
and many more).
All identifiers in the application name space (basically those NOT
starting with underscores) would however have to be documented, so the
app writer knows where his name space has been invaded.
If you happen to find a real problem due to identifier name clash (in an
implementation we support) we'd be of course happy to hear about it.
And thanks for caring about details!
More information about the vbox-dev