PROGRAMMING AND TECHNOLOGY
Often in classrooms we are taught that the main function is the ‘main’ function in a program! But it actually is not so. That is actually the default behavior of the compiler. The compiler has a predefined set of rules according to which ::
1. The main() function has a default priority of 0, which is the highest.
2. Priorities from 0 to 63 are reserved for use by C libraries.
3. Priorities from 64 o 99 are kept as a second reserve if the number of library function in a code exceeds 63.
4. Any user defined function starts with a priority of 100.
5. The maximum explicitly defined priority can be 254.
Thus it is obvious that the main() works with the highest priority at a program startup.
But the c language provides for a scope of changing the priority such that main() has a priority shift from startup to exit, i.e.; it has a higher priority on exit than on startup. This can exactly be done with the #pragma directive. The #pragma can help us to set priorities of out user defined functions, at startup as well at exit.
In this code I have implemented the #pragma directive to create a function ‘disp_start()’ which has a higher priority of 60 than main(), whose priority has been lowered from 0 to 70.
To keep in mind ::
1.The #pragma wont’ always change priorities to anything specified. Most of the time it is on availability.
2.The highest priorities of 0, 1 and 2 cannot always be assigned to all functions, and are machine dependent. An attempt to assign these priorities may result in a processor fault in some machines on runtime.
3. Any call to a library function, whose priority runs into the explicitly defined area, will overwrite the explicit priority definition and make space for itself.
Program without main - CodeCall Programming Forum 16June2008
[...] proceed and the static variable is updated, you can see the procedure for live. Also read :: Program without main | TECHARRAZ __________________ God is real… unless declared an integermy blog :: [...]
binod mainali 6August2008
the code written over here is giving three errors when i tested it in the bloodshed Dev Cpp that multiple declaration of void main() is it compiler specific one should keep in mind while using #pragma pre processor directive
admin 3September2008
#pragma is not compiler specific, though this code needs some modification for gcc compatibility. Change return of main and use new style headers with namespaces.