我有这些结构:
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;
我在recvfrom
的字节数组中查询了dns。
我试图从字节数组得到结构:
TdnsQuery* dnsQuery = (TdnsQuery*)buf;
printf("%u", dnsQuery->querySection->question.qtype);
为什么我收到错误解除指向不完整类型的指针?我这样做了吗?或者我怎样才能从该数组中获取dns查询结构?我需要dns查询问题并输入。
答案 0 :(得分:1)
您的查询部分打印机是不完整的类型。你需要事先键入它并且不使用结构关键字或使用结构名称而不是typedef。 e.g:
typedef struct foo Foo;
struct {
Foo* querySection;
// effectively same as above
struct foo* querySection2;
// NOT the following.
struct Foo* querySectionWrong;
};