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