priority syntax >>-#--pragma--priority--(--n--)--------------------------------><
Description
The #pragma priority directive specifies the order in which static objects are to be initialized at run time.
The value n is an integer literal in the range of INT_MIN to INT_MAX. The default value is 0. A negative value indicates a higher priority; a positive value indicates a lower priority.
The first 1024 priorities (INT_MIN to INT_MIN + 1023) are reserved for use by the compiler and its libraries. The #pragma priority can appear anywhere in the source file many times. However, the priority of each pragma must be greater than the previous pragma's priority. This is necessary to ensure that the run-time static initialization occurs in the declaration order.
Example
//File one called First.C
#pragma priority (1000)
class A { public: int a; A() {return;} } a;
#pragma priority (3000)
class C { public: int c; C() {return;} } c;
class B { public: int b; B() {return;} };
extern B b;
main()
{
a.a=0;
b.b=0;
c.c=0;
}
//File two called Second.C
#pragma priority (2000)
class B { public: int b; B() {return;} } b;
In this example, the execution sequence of the run-time static initialization is: