代码之家  ›  专栏  ›  技术社区  ›  Nick S Arnold

__属性\((构造函数))如何更改入口点?

  •  1
  • Nick S Arnold  · 技术社区  · 6 年前

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

    __start ctrt0 连接到程序中的启动例程,在调用程序的 主()

    所以我们有一些属性可以用于我们的函数,其中之一就是

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

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   Some programmer dude    6 年前

    标记为“constructor”的函数放在可执行文件的特殊部分中。“start”函数将在调用之前逐个调用这些函数 main .

    与“析构函数”一样,它们也被放在一个特殊的部分中,并由之后执行的代码调用 exit 主要的