【发布时间】:2021-11-14 00:07:35
【问题描述】:
最近看了一个公共C库的代码,发现函数定义如下:
void* block_alloc(void** block, size_t* len, size_t type_size)
{
return malloc(type_size);
(void)block;
(void)len;
}
不知道return后是否会到达statements。如果不是,这两条将某些数据转换为 void 的语句的目的是什么?
【问题讨论】:
-
大概是为了使编译器未使用的 var 警告静音?不,在方法/函数中的 return 语句之后不能到达任何语句。
-
我认为这是
block_alloc具有此特定签名的要求,但它实际上并不需要block或len,因此(void)block和(void)len抑制任何“未使用的变量" 警告。 -
将这些强制转换放在函数末尾是非常愚蠢的,因为现在您可能会收到关于无法访问代码的不同警告。演员表应该放在函数的开头。
标签: c type-conversion