One part of the standard that is relevant to system programming, but is not as widely discussed in literature, is how a C program starts. A common misconception is that a C program starts with the following two entry points:
int main(void) {}int main(int argc, char *argv[]) {}
Although this is, in fact, the first function call that a C programmer provides, it is not the first function called when your C program starts. It is not the first code that executes either, nor is it the first code provided by the user that executes.
A lot of work is carried out, both by the operating system and the standard C environment, as well as the user, prior to the main() function ever executing.
Let's look at how your compiler creates ...