从std::size_t强制转换为void
Casting from std::size_t to void
在许多较旧的代码中,我看到过以下代码段的变体:
std::size_t some_size = some_function_that_returns_size_t();
(void)some_size;
assert(some_size > some_other_size);
转换为void
的目的是什么?
请记住,这不是强制转换到void*
如果我必须猜测的话,这看起来像是一个安全检查,以确保在编译时机器size_t大于void。
在解释器中播放显示,如果初始值足够大,cast将返回一个与some_size
不同的值,但由于它没有被分配,我真的看不出这一点。
如果有关系,这是在分配库中发现的,作为分配检查对齐和大小的一部分。
据我所知,这样的技巧是用来防止编译器发出一个变量已定义但未使用的警告。
相关文章:
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 将尾部调用void(i32,..)位转换为llvm::函数以获取FnAttribute
- 为什么在逗号分隔符上下文中将预增量的结果强制转换为void
- Boost buffer_cast 无法从 void* 转换为 PointerToPodType
- 将通用引用强制转换为可调用的 void 指针,反之亦然
- 为什么在将 void 指针转换为整数指针时出现分段错误
- 在不同的编译器上转换为 void**
- 当我使用 void 函数的返回值(通过强制转换函数指针)时,究竟会发生什么?
- 不能在 if 语句 - c++ 中使用 void func 直接将字符串转换为大写
- 是否可以将已经初始化的变量转换为 void*?
- 错误:从'void*'到'const uint8_t* {aka const unsigned char*}'的转换无效 [-允许]
- 将可变参数模板类型转换为 void,预期')'之前
- 如何在运行时将指向派生类的 void* 正确转换为指向基类的 void*
- 是否强制转换void**并将第一个字节设置为nullptr
- 如何转换 void* 以访问结构的静态数据成员?
- 警告传递"double"以转换"void moveto(int, int)"的 2
- 是否有一种方法可以自动转换void指针的类型
- 在构造函数中强制转换void*并访问值
- 重新解释不带类型标识符的强制转换void
- 强制转换void指针