Ç - 字节数组结构(DNS查询)(C - byte array to structure (dns

2019-08-02 21:46发布

我有这些结构:

typedef struct dnsQuery {
  char header[12];
  struct TdnsQuerySection *querySection;
} TdnsQuery;

typedef struct dnsQuerySection {
  unsigned char *name;
  struct TdnsQueryQuestion *question;
} TdnsQuerySection;

typedef struct dnsQueryQuestion {
  unsigned short qtype;
  unsigned short qclass;
} TdnsQueryQuestion;

我也从字节数组DNS查询recvfrom 。 我想从字节数组像这样得到的结构:

TdnsQuery* dnsQuery = (TdnsQuery*)buf;
printf("%u", dnsQuery->querySection->question.qtype);

为什么我得到错误提领指向不完全类型? 我这样做对吗? 或者我怎样才能得到DNS查询结构从数组? 我需要一个DNS查询问题和类型。

Answer 1:

查询部分打印机是一个不完整的类型。 你需要或者typedef的事前,而不是使用这种结构的关键字,或使用结构的名称,而不是类型定义。 例如:

typedef struct foo Foo;

struct {
    Foo* querySection;
    // effectively same as above
    struct foo* querySection2;

    // NOT the following. 
    struct Foo* querySectionWrong; 
}; 


文章来源: C - byte array to structure (dns query)