昨天,在经历this问题时,我发现了一个奇怪的案例,即传递和接收未命名的结构作为函数参数。
例如,如果我有这样的结构,
int main ()
{
struct {
int a;
} var;
fun(&var);
}
现在,
fun
的原型(prototype)应该是什么?以及如何在fun
函数中将该结构用作结构(指针)? 最佳答案
出于对齐的原因,此原型(prototype)应工作:
void fun(int *x);
而且当然:void fun(void *x);
我没有找到一种在函数中实际有效使用结构的简便方法。也许在该函数中再次声明它,然后分配void *
?根据要求编辑
6.7.2.1-15
指向经过适当转换的结构对象的指针,指向该对象的
初始成员(或者,如果该成员是位域,则到
它所在的位置),反之亦然。可能有未命名的填充
在结构对象中,但不是在其开始时。