15.1.2.17 priority(n)

The priority attribute can be applied to a variable to group initializations together. n must be between 1 and 65535, with 1 being the highest level. All initializations with the same priority are initialized before moving onto the next priority level. Level 1 variables are initialized first and variables without a priority level are initialized last. The attribute can also be applied to void functions (void result and argument types); in this case the function(s) for level n will be executed immediately after all the initializations for level n are complete.