替代使用宏来更改旧代码

时间:2014-12-17 20:24:38

标签: c++ macros raii

我试图用RAII模式重新考虑一些旧代码。旧代码管理资源分配,但期望用户显式锁定/解锁资源。例如,像这样的东西(只是一个例子,而不是真正的代码):

void modify(int id){
    lock();
    modify_data_related_to_id(id);
    unlock();
}

会变成这样:

void modify(int id){
    RAIIOBJ obj;
    modify_data_related_to_id(id);
}

好处是您不必记住unlock对象。删除RAIIOBJ后,将在析构函数中自动调用unlock。

问题是,有大量的地方需要重新考虑。我以为我会使用宏并用RAII调用替换lock调用,而unlock将成为无操作函数,如:

#define lock() RAIIOBJ obj;
void unlock(){ //empty function
}

这样我就不必改变调用锁定/解锁的每个地方来使用RAII方法。但是,有没有更好的方法 - 也许只有一种问题的模式 - 这样做,而不是使用宏。

0 个答案:

没有答案