gpt4 book ai didi

c - __attribute__((constructor)) 它如何改变入口点?

转载 作者:太空宇宙 更新时间:2023-11-04 02:25:23 33 4
gpt4 key购买 nike

我知道从C编程语言的角度main() 是程序的入口点。

但从操作系统的角度来看,__start 位于 ctrt0 启动例程,它链接到一个程序中,该程序在调用程序的 main() 函数(如有错误请指正)。

所以我们有一些属性可以用于我们的函数,其中之一是在main()之前调用的constructor属性,谁负责调用这个函数?

__attribute__((construtor))
void foo(void)
{
puts("Constructor called by ... ?\n");
}

它在逐步调用堆栈中看起来如何?谢谢!

最佳答案

标记为“constructor”的函数被放置在可执行文件的一个特殊部分。然后,“start”函数将在调用 main 之前一个接一个地调用这些函数。

与“析构”函数一样,它们也被放在一个特殊的部分中,并在调用exitmain 返回后执行的代码调用。

关于c - __attribute__((constructor)) 它如何改变入口点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52202931/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com