gpt4 book ai didi

c - 来自 typedef 的不兼容类型在 c 中定义的指针

转载 作者:太空宇宙 更新时间:2023-11-04 04:12:10 26 4
gpt4 key购买 nike

使用 VS 2019,以下 C 代码函数在我的代码中给我 C4133 警告以及其他几个区域。警告指出: “警告 C4133 '=':不兼容的类型 - 从 'client *' 到 'client_t”

但是,从我的 typedef client* 和 client_t 来看应该是同一回事,除非我误解了 typdef 的语法。以下是我收到此警告的一个实例:

//Client information structure for linked list
typedef struct _client {
char NAME[30];
unsigned long PHONE;
unsigned long ID;
unsigned char CountryID;
struct client *next;
struct client *previous;
}client, *client_t;

/*Function to sequentually free every node in the doubly linked list
@param: client_t *head - reference pointer to the head pointer of the client linked list
*/
void RemoveClient(client_t *head) {
if (head)
{
client_t current = *head;

if (current && current->next) {
while (current) {
//Warning C4133 at the below line
current = (*head)->next;
free(*head);
*head = current;
}
}
else
{
free(*head);
}
current = NULL;
*head = NULL;
}
else printf("head is a NULL pointer");
}

最佳答案

发生的事情是您正在引用一个不存在的前向声明类型,名为struct client:

//Client information structure for linked list
typedef struct _client {
// ...
struct client *next;
struct client *previous;
}client, *client_t;

这有点棘手。在声明 nextprevious 时,您有一个名为 struct _client 的类型。此后不久,您就有了一个名为clienttypedef。不幸的是,它们都不是 struct client。由于操作仅引用指针,而不是取消引用它们,因此您没有任何实际错误,但是当您引用 next 时,编译器会说“嗯,struct client 既不是 client 也不是 struct _client -- 小心!”

关于c - 来自 typedef 的不兼容类型在 c 中定义的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55886359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com