2014-08-28 77 views
3

GOLD共享庫構造函數和析構函數是否定義爲__attribute__((constructor))__attribute__((destructor)),保證只運行一次?文件似乎暗示它們將至少運行一次,但不會提到任何關於不止一次的事情。是__attribute __((構造函數))保證只被調用一次?

換句話說,如果我做了必須做一次構造函數的操作,我需要保護它,像這樣:

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

在實踐中,我認爲這始終是有保證的,但它會很好,如果GCC證明這更好。 – 2014-08-28 00:44:07

+0

是的 - 構造函數在main()和析構函數被調用一次之前調用一次。 – 2014-08-28 01:18:32

+1

明顯的情況下,但與'dlopen'它變得少得多。 – keltar 2014-08-28 05:42:35

回答

相關問題