为什么在类声明中使用宏

sto*_*orm 5 c++ leveldb

我正在阅读leveldb的源代码,特别是.关于互斥锁.

我发现了这个声明:

class SCOPED_LOCKABLE MutexLock {
 public:
  explicit MutexLock(port::Mutex *mu) EXCLUSIVE_LOCK_FUNCTION(mu)
      : mu_(mu)  {
    this->mu_->Lock();
  }
  ~MutexLock() UNLOCK_FUNCTION() { this->mu_->Unlock(); }

 private:
  port::Mutex *const mu_;
  // No copying allowed
  MutexLock(const MutexLock&);
  void operator=(const MutexLock&);
};
Run Code Online (Sandbox Code Playgroud)

我发现它SCOPED_LOCKABLE被定义为空,所以为什么在类声明中使用它?

Pet*_*ood 1

在不同的环境中它可能被定义为不同的东西。有时它会影响链接。

它还可以指示需要包含其他标头才能正确配置库标头。