首页 资讯 社群 我的社区 搜索

main函数之前执行和main函数之后执行

木须虎
2020-07-02 09:57:40

昨天刚来的小弟们讨论一个问题,main 是程序入口,程序在执行的时候会从 main 的第一行开始,在 main 的 return 处程序结束。那实际中有没有可能有代码在main 之前就被执行呢? 其实答案是肯定的。

#include <stdio.h>

int before_main(void)
{
	printf("before main!n");
	return 0;
}

typedef int func();

#pragma data_seg(".CRT$XIU")
static func *before[] = { before_main };
#pragma data_seg()


int main(void)
{
	printf("This is main function.n");
	return 0;
}

 

其实,如果是 c++ , 你在 main 前定义一个全局变量,类的构造函数也会比 main 先执行的,这个并不神奇。

有意思的是下面的问题。如果 main 之前有先执行的方法,那反之 main rerurn 之后是否也可以有被执行的代码吗?

#include "stdafx.h"
#include <cstdlib>

int mainexit(void);

void main(void)
{

	_onexit(mainexit);

	printf("main(void).n");

	return;
}

int mainexit()
{
	printf("main next.n");
	return 0;
}

 

_onexit  了解一下吧...

用户评论