3
GOLD共享库构造函数和析构函数是否定义为__attribute__((constructor))
和__attribute__((destructor))
,保证只运行一次?文件似乎暗示它们将至少运行一次,但不会提到任何关于不止一次的事情。是__attribute __((构造函数))保证只被调用一次?
换句话说,如果我做了必须做一次构造函数的操作,我需要保护它,像这样:
static gboolean constructor_has_run = FALSE;
if(!constructor_has_run) {
do_operation();
constructor_has_run = TRUE;
}
在实践中,我认为这始终是有保证的,但它会很好,如果GCC证明这更好。 – 2014-08-28 00:44:07
是的 - 构造函数在main()和析构函数被调用一次之前调用一次。 – 2014-08-28 01:18:32
明显的情况下,但与'dlopen'它变得少得多。 – keltar 2014-08-28 05:42:35