函數屬性 __attribute__ ((constructor))和__attribute__ ((destructor))

函數屬性constructor和destructor, 構造函數初始化屬性init_priority

函數屬性功能

__attribute__ ((constructor))會使函數在main()函數之前被執行

__attribute__ ((destructor))會使函數在main()退出後執行

功能範圍

函數屬性__attribute__((constructor))和__attribute__((destructor))在可執行文件或者庫文件裏都可以生效

與全局變量比較

全局變量對象的構造函數可以通過__attribute__((init_priority())和__attribute__((constructor))標誌的函數的調整執行的優先順序

可執行文件的函數調用

例子如下:

在main之前執行函數-gcc

 

輸出結果:

在main之前執行函數-gcc

 

這裏beforemain 和構造函數不能使用std::cout, 只能使用printf, 因爲cout 需要全局變量初始化,但是beforemain和全局構造函數比他執行的早。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章