Next: Strong Using, Previous: Bound member functions, Up: C++ Extensions
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
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.See also See Strong Using.