是否__attribute __((构造函数)保证只调用一次?

是否使用__attribute __((构造函数))和__attribute __((析构函数))定义的GCC共享库构造函数和析构函数,保证只运行一次?文档似乎意味着它们将至少运行一次,但不会多次提及任何内容.

换句话说,如果我在构造函数中执行一个必须只执行一次的操作,我是否需要保护它,如下所示:

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

最佳答案 如果使用__attribute __((构造函数)),它将在执行开始时调用.

因此,您不必像上面提到的那样进行保护.

如果你提到它也没错

有关__attribute __((构造函数))的更多信息,您可以查看https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html

点赞