从std::size_t强制转换为void

Casting from std::size_t to void

本文关键字:转换 void std size      更新时间:2023-10-16

在许多较旧的代码中,我看到过以下代码段的变体:

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不同的值,但由于它没有被分配,我真的看不出这一点。

如果有关系,这是在分配库中发现的,作为分配检查对齐和大小的一部分。

据我所知,这样的技巧是用来防止编译器发出一个变量已定义但未使用的警告。