是否使用__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