从std :: size_t转换为void

时间:2014-07-22 12:12:29

标签: c++ casting

在很多旧代码中,我看到了以下代码段的变体:

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。

在解释器中玩游戏会发现,如果初始值足够大,演员阵容将返回不同于some_size的值,但由于它没有被分配,我老实说不会看到关键点。

如果重要,可以在分配库中找到它,作为对齐和大小的分配检查的一部分。

1 个答案:

答案 0 :(得分:6)

据我所知,这个技巧用于防止编译器发出一个警告,表明变量已被定义但未被使用。