我正在读一本使用C 的书(Butenhof的《使用POSIX线程编程》,1997年),并且遇到了以下问题:
(void)free(data);
这data
只是指向已分配结构的指针,
data = malloc(sizeof(my_struct_t));
为什么free
被强制转换为void
?
从我对C的理解来看,这似乎没有任何意义,原因有两个:
- 自由功能已经返回
void
- 该代码未使用返回值(甚至未分配给变量)
这本书写于1997年。这是某种遗留的东西吗?
作者提到这些示例是在Digital Unix 4.0d上运行的,但是如果您不打算使用该结果,我仍然无法想象有理由使用函数的结果。
free()
在您无需模仿的情况下,将演员角色视为一种奇怪的事物。很久以前它是半相关的,但是不再相关了。