gpt4 book ai didi

c - __attribute__((constructor)) 是否保证被调用一次?

转载 作者:太空狗 更新时间:2023-10-29 15:07:09 26 4
gpt4 key购买 nike

使用 __attribute__((constructor))__attribute__((destructor)) 定义的 GCC 共享库构造函数和析构函数是否保证只运行一次?文档似乎暗示它们将至少运行一次,但没有提及超过一次。

换句话说,如果我在构造函数中做一个只能做一次的操作,我是否需要像这样保护它:

static gboolean constructor_has_run = FALSE;
if(!constructor_has_run) {
do_operation();
constructor_has_run = TRUE;
}

最佳答案

如果有人想在标题中使用此类函数,可能会有用的观察:如果函数定义如下

__attribute__((constructor)) inline void fn()
{ ... }

在N个翻译单元中,会被调用N次。

关于c - __attribute__((constructor)) 是否保证被调用一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25539021/

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