Can you write two functions in which one executes before main function and other executes after the main function?
#pragma startup [priority]
#pragma exit [priority]
Where, priority is optional integer value.
For user priority varies from 64 to 255
For c libraries priority varies from 0 to 63
Default priority is 100.
pragma startup always execute the function before the main function pragma exit always execute the function after the main function. Function declaration of must be before startup and exit pragma directives and function must not take any argument and return void. If more than one startup directive then priority decides which one will execute first.
startup:
Lower value: higher priority i.e. functions will execute first. If more than one exit directive then priority decides which one will execute first.
exit:
Higher value: higher priority i.e. functions will execute first.
Example
#include<stdio.h>
void india();
void usa() ;
#pragma startup india 105
#pragma startup usa
#pragma exit usa
#pragma exit india 105
int main(){
printf("\nI am in main");
return 0;
}
void india(){
printf("\nI am in india");
}
void usa(){
printf("\nI am in usa");
}
Output:
I am in usa
I am in India
I am in main
I am in India
I am in usa
Explanation:
Above program there are two startup directives which will execute before the main function.
Function name India has priority 105
Function name usa has priority 100 (default)
So usa function will execute first than India function and above program there are two exit directive which will execute after the main function.
Function name India has priority 105
Function name usa has priority 100 (default)
So india function will execute first than usa function.