作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
给定以下代码:
void test(int var)
{
Q_UNUSED(var);
#ifdef SOMETHING
printf("%d",var);
//do something else with var...
#endif
}
如果我在某些场景中实际使用“var”变量(如上面的示例),Q_UNUSED
宏是否会有任何影响,或者当我抑制编译器警告时它根本没有影响未使用的变量?
到目前为止,我观察到它没有任何效果,但我想确定一下。
最佳答案
在很多情况下不会(例如,只是将一个简单的变量传递给宏)。定义在 qglobal.h
内:
# define Q_UNUSED(x) (void)x;
禁用未使用的变量警告。您可以毫无问题地使用此宏之后的变量。
但是,如果您将表达式或其他内容传递给宏并且编译器必须评估该表达式,它可能会产生副作用 † .
关于c++ - Q_UNUSED 有副作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19576884/
与在函数中省略参数名称相比,使用 Q_UNUSED 宏有什么好处? Q_UNUSED 版本: void f(int x) { Q_UNUSED(x); } 省略版本: void f(int)
给定以下代码: void test(int var) { Q_UNUSED(var); #ifdef SOMETHING printf("%d",var); //do s
我是一名优秀的程序员,十分优秀!