#pragma exit and #pragma startup
Go Up to Pragma Directives Overview Index
Contents
Syntax (See Pseudo-grammar)
#pragma startup FUNC [NN] #pragma exit FUNC [NN]
Description
These two pragmas allow the program to specify function(s) that should be called either upon program startup (before the main function is called) or program exit (just before the program terminates through _exit).
The specified function name must be a previously declared function taking no arguments and returning void; in other words, it should be declared as:
void myfunc(void);
Then the #pragma
would be:
#pragma startup myfunc
Specifying Priority
The optional priority parameter (NN
) should be an integer in the range from 64 through 255:
- The highest priority is 0.
- Functions with higher priorities are called first at startup and last at exit.
- If you do not specify a priority, it defaults to 100 for both BCC32 and Clang-enhanced C++ compilers.
Warning: Do not use priority values less than 64 with BCC32. Priorities from 0 through 63 are reserved for RTL startup and shutdown mechanisms. The exception for Clang-enhanced C++ compilers is described in the text below.
Unit Initialization Order in Applications Built with Clang-enhanced C++ Compilers
- Note: Unit initialization order should take priority over
#pragma startup
order, but this is currently not implemented for Clang-enhanced C++ compilers.
- Note: Unit initialization order should take priority over
Clang-enhanced C++ compilers do not use unit initialization order, and therefore exit routines that are run without a priority specification close before the main form closes. If you are using Clang-enhanced C++ compilers, you must specify the #pragma exit
routine with priority 30 in order to guarantee that the exit routine runs after __ExitVCL (and to match the behavior of BCC32). For example:
#pragma exit myfunc 30