从C编程语言的角度来看,我知道
main()
是程序的入口点。
但是从操作系统的角度来看,__start
是ctrt0
处的启动例程,这些例程被链接到一个程序中,该程序执行调用程序的main()
函数之前所需的任何初始化工作(如果这里有错,请纠正我。)
所以我们有一些可以用于功能的属性,其中之一是 在main()之前调用的构造方法属性,谁负责调用此函数?
__attribute__((construtor))
void foo(void)
{
puts("Constructor called by ... ?\n");
}
以及它在逐步调用堆栈中的外观如何?谢谢!
答案 0 :(得分:2)
标记为“构造函数”的功能放在可执行文件的特殊部分中。然后,“开始”功能将在调用main
之前逐个调用这些功能。
与“析构函数”函数相同,它们再次放置在特殊部分中,并由调用exit
或返回main
之后执行的代码调用。