gcc函数属性在函数入口和函数上做一些事情。出口

时间:2015-02-24 13:34:33

标签: gcc clang llvm-clang

现在有很多可以分配给变量/函数的gcc属性。我已经浏览了gcc文档而我找不到我要找的东西 - 或者我可能错过了它。因此问题。

我正在寻找的是使用gcc时的一些机制,当函数'f'进入时调用函数'X',当函数'f'退出时调用函数'Y'。基本上我目前有很多代码,我想知道LOCK / UNLOCK是否可以通过某种属性“自动”完成。

f() {

LOCK_RESOURCE();

UNLOCK_RESOURCE();

}

1 个答案:

答案 0 :(得分:0)

您正在寻找__attribute__((cleanup))

  

当变量超出范围时,cleanup属性会运行一个函数。该属性只能应用于自动函数范围变量;它可能不适用于具有静态存储持续时间的参数或变量。该函数必须带一个参数,一个指向与变量兼容的类型的指针。函数的返回值(如果有)将被忽略。