【问题标题】:Void * pointer to a structurevoid * 指向结构的指针
【发布时间】:2014-10-01 17:31:33
【问题描述】:

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

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

我将它初始化为:

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

我声明了另一个结构DATA Contents;:

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

但是,当我执行Contents.Data = Timout; 时,它给了我以下错误:

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

请帮忙:)

【问题讨论】:

  • 您对Timeout 的初始化甚至不应该编译。

标签: c++ c struct void-pointers


【解决方案1】:

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

Contents.Data = &Timeout;

【讨论】:

    【解决方案2】:

    您不能将结构本身分配给 void* 而是分配它的地址,因此请使用

    Contents.Data = &Timeout;
    

    【讨论】:

      猜你喜欢
      • 2016-03-21
      • 1970-01-01
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      相关资源
      最近更新 更多