【发布时间】:2015-03-25 09:23:46
【问题描述】:
我有一个名为 MutexLock 的类,它的作用就像听起来一样:它在构造时锁定互斥体,并在销毁时释放它:
class OpenEXRMutexLock
{
#ifndef HAVE_PTHREADS
public:
OpenEXRMutexLock() : lock(openEXRmutex) { }
private:
std::unique_lock<std::mutex> lock;
#endif
};
当 HAVE_PTHREADS 被定义时,gcc 4.9.1 每次我都会抱怨未使用的变量:
OpenEXRMutexLock lock;
当然,该类永远不能在构造和自动销毁之外使用。
目前,我做了一些丑陋的事情:我添加了
void OpenEXRMutexLock::dummyFuncAvoidingWarnings() const {}
并在任何地方调用它:
OpenEXRMutexLock lock;
lock.dummyFuncAvoidingWarnings(); //Eeerk
有没有办法避免这种情况不禁用整个项目的未使用变量警告?
【问题讨论】:
-
你读我的问题太快了……我不想这样,因为这些警告很有趣
-
请阅读我指出的具体答案,该答案向您展示如何一次为一个变量禁用它。
-
请发布一些实际代码,因为我的 g++ 4.9.2(诚然不完全是您的编译器,但非常接近)不会在调用构造函数后立即给出未使用的变量警告。即使该构造函数实际上是空的。您可能还希望分享您如何准确调用 g++。
-
@gha.st :你是对的:添加一个空的ctor解决了这个问题。要输入详细答案吗?
标签: c++ gcc warnings raii unused-variables