现在有很多可以分配给变量/函数的gcc属性。我已经浏览了gcc文档而我找不到我要找的东西 - 或者我可能错过了它。因此问题。
我正在寻找的是使用gcc时的一些机制,当函数'f'进入时调用函数'X',当函数'f'退出时调用函数'Y'。基本上我目前有很多代码,我想知道LOCK / UNLOCK是否可以通过某种属性“自动”完成。
f() {
LOCK_RESOURCE();
UNLOCK_RESOURCE();
}
答案 0 :(得分:0)
您正在寻找__attribute__((cleanup))
:
当变量超出范围时,cleanup属性会运行一个函数。该属性只能应用于自动函数范围变量;它可能不适用于具有静态存储持续时间的参数或变量。该函数必须带一个参数,一个指向与变量兼容的类型的指针。函数的返回值(如果有)将被忽略。