This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Is init_priority file scope or global scope?
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: GCC Development <gcc at gcc dot gnu dot org>
- Date: Sat, 11 Dec 2010 16:47:14 -0800
- Subject: Is init_priority file scope or global scope?
Hi,
Using .init_array section on Linux/x86 raised a question on
init_priority. GCC manual says
`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.
Is init_priority file scope or global scope? I consider init_priority is
file scope. Is that a correct assumption?
--
H.J.