C语言main函数执行的前后
2011-10-23 12:26
190 查看
1.main函数之前--真正的函数执行入口
main函数执行之前,主要就是初始化系统相关资源:1.设置栈指针。
2.初始化static静态和global全局变量,即data段的内容。
3.将未初始化部分的赋初值:数值型short,int,long等为0,bool为FALSE,指针为NULL等等,即.bss段的内容。
4.运行全局构造器(例如C++中构造的函数)。
5.将main函数的参数argc、argv等传递给main函数,然后才真正运行main函数。
main代码汇编以后的结构:
section .text:
_start
...
call _main
...
call _exit
...
2.程序结束之时--函数atexit()
C函数库为我们提供了一个函数atexit(),该函数的原型为int atexit (void (*function)(void)),定义在stdlib.h函数库中。该函数用来设置一个程序正常结束前调用的函数。当程序调用exit()或从main中返回时,参数function所指的函数就会被调用,在该函数返回后才会真正的退出。函数atexit调用成功返回0,否则返回-1,可以在errno中查看错误信息。atexit()执行时与注册顺序相反。#include <stdlib.h>
#include <stdio.h>
void function1(void)
{
printf("enter function1... \n");
}
void function2(void)
{
printf("enter function2... \n");
}
void function3(void)
{
printf("enter function3... \n");
}
void function4(void)
{
printf("enter function4... \n");
}
int main(void)
{
atexit(function1);
atexit(function2);
atexit(function3);
atexit(function4);
printf("注意啊,main函数马上就要结束啦!\n");
}
运行结果:注意啊,main函数马上就要结束啦!
enter function4...
enter function3...
enter function2...
enter function1...
相关文章推荐
- 在main函数前后执行的函数之 C语言
- C语言中如何在main函数开始前执行函数
- C语言中怎么在main函数开始前执行函数
- [C/C++] main函数执行前后还会发生什么
- 如何在main函数前后执行代码
- C语言main函数和程序执行学习笔记
- C语言中没有main函数生成可执行程序的几种方法
- C语言中总是从main函数开始执行函数吗?
- C语言中怎么在main函数开始前执行函数
- C语言中没有main函数生成可执行程序的几种方法
- main函数执行前后 《程序员的自我修养》·笔记
- C语言中没有main函数生成可执行程序的几种方法
- C语言中如何在main函数开始前执行函数
- C语言中怎么在main函数开始前执行函数
- C语言中没有main函数生成可执行程序的几种方法
- 在main函数前后执行代码的方法
- main函数执行前后的代码
- C语言中如何在main函数开始前执行函数
- C语言中如何在main函数开始前执行函数
- [C/C++] main函数执行前后还会发生什么