指向结构体的Void *指针

Void * pointer to a structure

本文关键字:指针 Void 结构体      更新时间:2023-10-16

我正在实现超时。所以我声明了一个超时结构

typedef struct{
    unsigned long * Task;
    unsigned long Timeout;
    unsigned long Offset;
    DATA * Next;
    DATA * Previous;    
} TIMEOUT;

初始化为:

TIMEOUT Timout = {NULL ,30,0,NULL,NULL,NULL};

和i声明了另一个结构体DATA Contents;:

typedef struct{
    char CallBack;
    void * Data;
}DATA;

然而,当我做Contents.Data = Timout;时,它给了我以下错误:

CA850 error E2524: illegal type combination for '=' (void *, __faked63)

请帮忙:)

你需要一个指针。表达式Contents.Data = Timeout;试图将TIMEOUT类型的值赋给void*类型的变量。使用&Timeout获取指针:

Contents.Data = &Timeout;

不能将结构体本身赋值给void*,只能赋值给它的地址,所以使用

Contents.Data = &Timeout;