3 回答
TA贡献1895条经验 获得超7个赞
class A {};A operator+(A const &, A const &);int main () { A a; a + a; // Not a problem (void)operator+(a,a); // Using function call notation - so add the cast.
TA贡献1827条经验 获得超7个赞
static_cast<void>(fn());
TA贡献1812条经验 获得超5个赞
铸造到void用于抑制未使用变量和未保存的返回值或表达式的编译器警告。
“标准”(2003)在第5.2.9/4节中说,
任何表达式都可以显式转换为“cvvoid”类型。表达式值是弃置.
所以你可以写:
//suppressing unused variable warnings
static_cast<void>(unusedVar);
static_cast<const void>(unusedVar);
static_cast<volatile void>(unusedVar);
//suppressing return value warnings
static_cast<void>(fn());
static_cast<const void>(fn());
static_cast<volatile void>(fn());
//suppressing unsaved expressions
static_cast<void>(a + b * 10);
static_cast<const void>( x &&y || z);
static_cast<volatile void>( m | n + fn());
所有表格均有效。我通常把它缩短为:
//suppressing expressions
(void)(unusedVar);
(void)(fn());
(void)(x &&y || z);
也没问题。
- 3 回答
- 0 关注
- 450 浏览
添加回答
举报