C++ 使用静态投影的目的是什么<;无效>;()?

C++ 使用静态投影的目的是什么<;无效>;()?,c++,casting,void,static-cast,C++,Casting,Void,Static Cast,static\u cast()是编写void转换的“C++方式” 在en.cppreference.com网站中,提及为丢弃表达式的值。在下面链接解释部分的四点 我们应该在哪里以及为什么使用static\u cast()?举一个例子。这是一种判断变量未使用是否可以抑制相应的编译器警告的方法。由于在C++17中引入了[[maybe_unused]]属性,这种方法已被弃用。强制转换为无效的通常目的是“使用”计算结果。在相对严格的构建环境中,当声明变量、甚至写入变量时,通常会输出警告,甚至错误,但结

static\u cast()
是编写
void
转换的“C++方式”

在en.cppreference.com网站中,提及为丢弃表达式的值。在下面链接解释部分的四点


我们应该在哪里以及为什么使用
static\u cast()
?举一个例子。

这是一种判断变量未使用是否可以抑制相应的编译器警告的方法。由于在C++17中引入了
[[maybe_unused]]
属性,这种方法已被弃用。

强制转换为
无效
的通常目的是“使用”计算结果。在相对严格的构建环境中,当声明变量、甚至写入变量时,通常会输出警告,甚至错误,但结果从未使用过。如果在代码中,你知道你不需要某个结果,你可以使用<代码> StistalyCase方法将结果标记为损坏-但是编译器会考虑使用的变量,不再创建警告或错误。 例如:

#include <iostream>

int myFunction() __attribute__ ((warn_unused_result));
int myFunction()
{
  return 42;
}

int main()
{
  // warning: ignoring return value of 'int myFunction()',
  // declared with attribute warn_unused_result [-Wunused-result]
  myFunction();

  // warning: unused variable 'result' [-Wunused-variable]
  auto result = myFunction();

  // no warning
  auto result2 = myFunction();
  static_cast<void>(result2);
}
#包括
int myFunction();
int myFunction()
{
返回42;
}
int main()
{
//警告:忽略“int myFunction()”的返回值,
//使用属性warn\u unused\u result[-Wunused result]声明
myFunction();
//警告:未使用的变量“结果”[-Wunused变量]
自动结果=myFunction();
//没有警告
auto result2=myFunction();
静态铸型(结果2);
}
使用
g++-std=c++14-Wall example.cpp编译时,前两个函数调用将创建警告


正如VTT在他的文章中指出的那样,从C++17中,您可以选择使用
[[maybe_unused]]]
属性来代替它。

@vee No,可以使用变量:from[dcl.attr.unused]3[注:对于标记为“可能未使用”的实体,实现不应发出警告,说明该实体未使用,或尽管存在该属性,该实体仍在使用。-结束注]