I know and I've used #pragma startup
and #pragma exit
before but when I execute the following code it outputs only In main
. Can anyone tell me what's happening here?
#include<stdio.h>
#pragma startup A 110
#pragma startup B
#pragma exit A
#pragma exit B 110
int main()
{
printf("\nIn main");
return 0;
}
void A()
{
printf("\nIn A");
}
void B()
{
printf("\nIn B");
}
Or is it compiler dependent? I am using gcc compiler.
All #pragma
directives are compiler-dependent, and a compiler is obliged to ignore any it does not recognise (ISO-9899:2011, s6.10.6: “Any such pragma that is not recognized by the implementation is ignored.”). That's why your program compiles successfully.
Functions A
and B
aren't called because... you don't call them. Apologies if you understand this perfectly well, but: a C program is executed by invoking the function main
. If you want the functions A
and B
to be called, you have to do so within the main
function.
(In fact, recent versions of the C standard have introduced a small number of STDC
pragmas which implementations are obliged to recognise, but that doesn't importantly affect the answer)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With