类型强制转换为void?还是别的什么?及其原因

A typecast to void? or what? and why?

本文关键字:什么 转换 类型 void      更新时间:2023-10-16

我正在寻找llvm clang的c++标准库实现…
在文件mutex.cpp中,我发现了以下代码:

void
mutex::unlock() _NOEXCEPT
{
    int ec = pthread_mutex_unlock(&__m_);
    (void)ec;                              // What??, Why??? O.o
    assert(ec == 0);
}

我不明白那个表达式在做什么,为什么…
我需要一些解释

我认为使用这个表达式是为了避免编译器警告变量已声明但未使用。

正如user2864740所指出的,这段代码中的assert语句可以是一个在某些情况下不使用变量的宏。也就是说,它可以扩展为一个空语句。