是否可以编写一个C宏,在代码块之前执行一些操作,在代码块之后执行另一个操作?
int is_locked;
#define LOCKED for(is_locked = 1, lock_something(); is_locked; is_locked = 0, unlock_something())
LOCKED{
...
do_something_under_lock();
...
}
这会奏效;但是,它需要变量is_locked
来检查我们是否处于锁定状态。还有另一种可能的解决方案吗?