C++ 这个定义是什么?

C++ 这个定义是什么?,c++,C++,这个定义的作用是什么?我将如何使用它 #define UNUSED(VAR) (void)&(VAR) 它在任何地方都需要定义吗?这是在标题中 编辑-我真的不明白这里发生了什么。这是一个被强制作废的宏吗?这不是否定了变量吗?目的是防止自己收到有关未使用参数的编译器警告 更好的方法就是不透露姓名 void do_stuff( int x, int ); 第二个参数在此情况下未使用。出于过载的目的,它可能需要在那里 关于对局部变量使用它,你必须问自己,为什么声明一个局部变量而不使用它 答

这个定义的作用是什么?我将如何使用它

#define UNUSED(VAR) (void)&(VAR)
它在任何地方都需要定义吗?这是在标题中


编辑-我真的不明白这里发生了什么。这是一个被强制作废的宏吗?这不是否定了变量吗?

目的是防止自己收到有关未使用参数的编译器警告

更好的方法就是不透露姓名

void do_stuff( int x, int );
第二个参数在此情况下未使用。出于过载的目的,它可能需要在那里

关于对局部变量使用它,你必须问自己,为什么声明一个局部变量而不使用它

答案可能是,在代码中使用预处理器时,有时会使用变量,但并不总是这样。然而,预先处理它的存在可能并不总是切实可行的


如果您真的使用了变量,那么声明一个未使用的变量并不意味着它是一个错误。

目的是防止您收到有关未使用参数的编译器警告

更好的方法就是不透露姓名

void do_stuff( int x, int );
第二个参数在此情况下未使用。出于过载的目的,它可能需要在那里

关于对局部变量使用它,你必须问自己,为什么声明一个局部变量而不使用它

答案可能是,在代码中使用预处理器时,有时会使用变量,但并不总是这样。然而,预先处理它的存在可能并不总是切实可行的


如果确实使用了某个变量,则声明该变量未使用并不会使其成为错误。

这是一个宏,可用于停止编译器对已删除但未引用的变量发出抱怨/警告。使用编译器#pragma设置全局禁用此类警告,通常会获得相同的结果。

这是一个宏,可用于停止编译器对已删除但未引用的变量发出抱怨/警告。使用编译器#pragma设置来全局禁用此类警告,通常会获得相同的结果。

这用于在某些变量未使用时编译器生成警告或错误。使用这样的定义,如果您检查了情况,您可以插入一个“no op”来消除这些警告/错误

例如:

void foo()
{
  int x=0;
  UNUSED(x); // don't warn me that x is not actually being used
}

这是为了在某些变量未使用时,编译器产生警告或错误。使用这样的定义,如果您检查了情况,您可以插入一个“no op”来消除这些警告/错误

例如:

void foo()
{
  int x=0;
  UNUSED(x); // don't warn me that x is not actually being used
}

它的存在是为了避免对未使用的参数和变量发出警告。简单地强制转换到
void
就足够了:它使用变量,而强制转换通常什么都不做。我只能猜测这里使用的
&
运算符是什么。也许这是对的。然而,事实并非如此。或者可以确保它只用于变量,但这也不是完美的:

它的存在是为了避免对未使用的参数和变量发出警告。简单地强制转换到
void
就足够了:它使用变量,而强制转换通常什么都不做。我只能猜测这里使用的
&
运算符是什么。也许这是对的。然而,事实并非如此。或者可以确保它只用于变量,但这也不是完美的:

匿名存在两个问题。首先,只有在没有代码路径或有条件编译的块使用变量的情况下,这才有效。如果有人这样做,让它匿名将导致那些这样做的失败。第二,让它匿名会使代码更难检查,因为这样很难判断该变量所包含的内容,从而确定该变量在代码中是否被安全忽略。首先,只有在没有代码路径或有条件编译的块使用变量的情况下,这才有效。如果有人这样做,让它匿名将导致那些这样做的失败。第二,让它匿名会使代码更难检查,因为这样很难判断该变量所包含的内容,这是确定该变量在代码中是否被安全忽略所必需的。是的,它是一个强制转换为
void
的宏。你说“否定变量”是什么意思?错了,我的意思是使它为空。。我想是吧。例如,如果是int,则强制转换为void会做什么?它什么都不做。这就是为什么在这里使用它。这是一种明确的表示“不处理此变量”的方式。是的,它是一个强制转换为
void
的宏。你说“否定变量”是什么意思?错了,我的意思是使它为空。。我想是吧。例如,如果是int,则强制转换为void会做什么?它什么都不做。这就是为什么在这里使用它。这是一种明确的说法“不要使用这个变量”。