在 C 中出现错误:从不兼容的指针类型传递函数的参数 1
Getting an error in C: passing argument 1 of function from incompatible pointer type
函数签名是
void abort(context_t **ctx);
,其中 ctx
是另一个结构的 属性。
在我创建了一个指向主结构(server_t *server
)的指针之后,我可以毫无问题地将指针传递给指向主结构(**server
)的指针,使用指针其属性如下:(*server)->ctx
或 (*server)->addr
,等等
但我不知道如何将 **ctx
直接传递给函数,而不传递 **server
。如果我尝试使用 abort(&server->ctx)
,我会得到一个错误:
error: passing argument 1 of ‘abort’ from incompatible pointer type: abort(&server->ctx);
note: expected ‘context_t ** {aka struct context_t **}’ but argument is of type ‘struct context_t *’
void abort(context_t **ctx);
note: expected ‘context_t ** {aka struct context_t **}’ but argument is of type ‘struct context_t *’
您似乎试图将指针分配给双指针。你可以试试:
context_t * temp_ctx = &server->ctx;
abort(&temp_ctx);
编译错误可以通过以下代码行修复:
/* declare context_t* pointer variable on the appropriate scope */
/* based on how **ctx is used by abort() */
context_t *pContext;
/* .... */
/* assign the pointer */
pContext = &server->ctx;
/* now pass the context_t** or "the address of pContext" to abort() */
abort(&pContext);
函数签名是
void abort(context_t **ctx);
,其中 ctx
是另一个结构的 属性。
在我创建了一个指向主结构(server_t *server
)的指针之后,我可以毫无问题地将指针传递给指向主结构(**server
)的指针,使用指针其属性如下:(*server)->ctx
或 (*server)->addr
,等等
但我不知道如何将 **ctx
直接传递给函数,而不传递 **server
。如果我尝试使用 abort(&server->ctx)
,我会得到一个错误:
error: passing argument 1 of ‘abort’ from incompatible pointer type: abort(&server->ctx);
note: expected ‘context_t ** {aka struct context_t **}’ but argument is of type ‘struct context_t *’
void abort(context_t **ctx);
note: expected ‘context_t ** {aka struct context_t **}’ but argument is of type ‘struct context_t *’
您似乎试图将指针分配给双指针。你可以试试:
context_t * temp_ctx = &server->ctx;
abort(&temp_ctx);
编译错误可以通过以下代码行修复:
/* declare context_t* pointer variable on the appropriate scope */
/* based on how **ctx is used by abort() */
context_t *pContext;
/* .... */
/* assign the pointer */
pContext = &server->ctx;
/* now pass the context_t** or "the address of pContext" to abort() */
abort(&pContext);