2015-02-24 50 views
1

這些天有很多gcc屬性可以分配給變量/函數。我已經通過gcc文檔,我還沒有找到我在找什麼 - 或者可能是我錯過了它。因此,這個問題。gcc函數屬性在函數入口和出口處做些什麼

我在尋找的是使用gcc時的一些機制,當函數'f'進入函數'X'時函數'f'退出時調用函數'Y'。基本上我目前有很多代碼可以遵循,我想知道LOCK/UNLOCK是否可以通過某種屬性「自動」完成。

f() { 

LOCK_RESOURCE(); 

UNLOCK_RESOURCE(); 

} 
+0

您可以用C++模式編譯該文件並使用struct構造函數/析構函數。 – Thomas 2015-02-25 20:06:02

回答

0

您正在尋找__attribute__((cleanup))

的清理屬性時,該變量超出範圍運行的功能。該屬性只能應用於自動功能範圍變量;它可能不適用於具有靜態存儲持續時間的參數或變量。該函數必須帶有一個參數,一個指向與該變量兼容的類型的指針。函數的返回值(如果有的話)被忽略。