类型强制转换为void?还是别的什么?及其原因
A typecast to void? or what? and why?
我正在寻找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语句可以是一个在某些情况下不使用变量的宏。也就是说,它可以扩展为一个空语句。
相关文章:
- 努力将整数转换为链表。不知道我在这里做错了什么
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 从长整整转换为uint64_t的推荐方法是什么?
- C++:Lambda 函数指针转换的用例是什么?
- 将传入的网络"char*"数据转换为"uint8_t"并返回的安全方法是什么?
- 为什么此指针值不能转换为整数的规则是什么?
- 指针类型类成员的动态强制转换的恒定性是什么?
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 当我使用 void 函数的返回值(通过强制转换函数指针)时,究竟会发生什么?
- 从二进制流中读取时,将双精度变量的地址转换为 char* 意味着什么?
- 使用 CStringW/CStringA 和 CT2W/CT2A 转换字符串有什么区别?
- 将QGyroscopeReading转换为QVector3D的正确方法是什么?
- C++ C4244 =':从"std::streamsize"转换为"无符号短",可能会丢失数据;有什么解决办法吗?
- 在从 C++ 转换为 C# 的代码中,我应该使用什么而不是 memcpy?
- 在C++中将uint64_t转换为void类型的目的是什么
- 在C++中,将无符号整数转换为八进制表示,反之亦然的最佳方法是什么
- 这个typedef和转换运算符语法是什么意思
- 是什么将程序集转换为实际可执行的材料
- 转换为非标量误差是什么意思?我该如何解决?
- 在 OpenGL 中计算矩阵时,转换的正确顺序是什么?