C++-Specific Variable, Function, and Type Attributes
====================================================
Some attributes only make sense for C++ programs.
`init_priority (PRIORITY)'
In Standard C++, objects defined at namespace scope are guaranteed
to be initialized in an order in strict accordance with that of
their definitions _in a given translation unit_. No guarantee is
made for initializations across translation units. However, GNU
C++ allows users to control the order of initialization of objects
defined at namespace scope with the `init_priority' attribute by
specifying a relative PRIORITY, a constant integral expression
currently bounded between 101 and 65535 inclusive. Lower numbers
indicate a higher priority.
In the following example, `A' would normally be created before
`B', but the `init_priority' attribute has reversed that order:
Some_Class A __attribute__ ((init_priority (2000)));
Some_Class B __attribute__ ((init_priority (543)));
Note that the particular values of PRIORITY do not matter; only
their relative ordering.
`java_interface'
This type attribute informs C++ that the class is a Java
interface. It may only be applied to classes declared within an
`extern "Java"' block. Calls to methods declared in this
interface will be dispatched using GCJ's interface table
mechanism, instead of regular virtual table dispatch.