如何在 C 中接收未命名结构作为函数参数?

Pav*_*ath 6 c struct function-parameter function-prototypes

昨天在解决这个问题时,我发现了一个奇怪的情况,即传递和接收未命名的结构作为函数参数。

例如,如果我有这样的结构,

int main ()
{
    struct {
        int a;
    } var;

    fun(&var);
}
Run Code Online (Sandbox Code Playgroud)

现在,原型应该是什么fun?我如何将该结构用作函数中的结构(指针)fun

cni*_*tar 4

出于对齐原因,此原型应该可以工作:

\n
void fun(int *x);\n
Run Code Online (Sandbox Code Playgroud)\n

而且当然:

\n
void fun(void *x);\n
Run Code Online (Sandbox Code Playgroud)\n

我没有看到在函数中实际有效使用该结构的简单方法;也许在该函数内再次声明它,然后分配void *?

\n

按要求编辑

\n
\n

6.7.2.1 - 15

\n

指向结构对象的指针经过适当转换后,会指向其\n初始成员(或者,如果该成员是位\xef\xac\x81字段,则指向其所在的单元\n),反之亦然。结构对象内可能有未命名的填充,但不在其开头。

\n
\n

  • @PavanManjunath 我为你添加了一句话。 (2认同)