main函数之前做了什么

__attribute__((constructor)) void before()
{
    printf("this is main before
");
}

__attribute__((destructor)) void after()
{
    printf("this is main after
");
}
void main(int argc, char** argv)
{
    printf("this is main
");
}

总结: main函数执行之前,主要就是初始化系统相关资源: 1.设置栈指针 2.初始化static静态和global全局变量,即data段的内容 3.将未初始化部分的赋初值:数值型short,int,long等为0,bool为FALSE,指针为NULL,等等,即.bss段的内容 4.运行全局构造器,估计是C++中构造函数之类的吧 5.将main函数的参数,argc,argv等传递给main函数,然后才真正运行main函数


青青园中葵,朝露待日晞。 阳春布德泽,万物生光辉。 常恐秋节至,焜黄华叶衰。 百川东到海,何时复西归? 少壮不努力,老大徒伤悲!
原文地址:https://www.cnblogs.com/weiyouqing/p/14467169.html