1.在代码中对于一个变量、指针会出现(void)varName这样的形式,如:
///函数
int func(int a,int b)
{
(void)b;
return a;
}
类
class RangeFilterRenameEcho: public ActionHandler
{
public:
virtual int action(const DB::IAST & ast, Poco::JSON::Object::Ptr& jsonObj) override
{
rewriterLogger("handle RangeFilterRenameEcho");
(void)ast;
(void)jsonObj;
return 0;
}
static ActionHandler* makeHandler()
{
return new RangeFilterRenameEcho;
}
public:
static std::string ruleName;
};
使用这种方式的主要作用是:避免未使用变量的编译警告。编译器在使用-Wunused参数时,会提示有变量声明未使用。
在C++中,没有使用的变量,在编译期间会出现警告。
2.另一种方式如下,也可以禁止警告信息输出,
#pragma unused
3.另外一种方法是使用boost库提供的ignore_unused
一个简单的示例如下:
int func(int a)
{
ignore_unused(a);
return 0;
}
int func(int a)
{
int y;
ignore_unused(a,y);
return 0;
}
ignore_unused的好处是可以一次屏蔽多个未使用变量的编译警告,没有运行效率损失;
(void)varName方式会被编译器优化掉,不会有运行效率损失,但该方式语义不明确。