#include <stdio.h>
struct m_tag {
short m_tag_id;
short m_tag_len;
int m_tag_cookie;
};
struct packet_tags {
struct m_tag *slh_first;
}tags;
#define SFIRST(head) ((head).slh_first)
int main(void) {
printf("%p\n", SFIRST(&tags));
return 0;
}
在函数“ main”中: 错误:请求成员“ slh_first”使用的不是结构体或联合体
此代码有什么问题?
答案 0 :(得分:5)
您正尝试使用slh_first
访问operator.
成员,这需要在左侧的实例为packet_tags
。但是,您没有将packet_tags
的实例传递给SFIRST()
,而是将指针传递给了packet_tags
实例。因此,为了访问成员,您需要取消引用指针才能到达实例。编译器抱怨的是在指针上调用operator.
。
改为将SFIRST()
更改为此:
#define SFIRST(head) ((head)->slh_first)
或者,不太受欢迎,但同样有效:
#define SFIRST(head) ((*(head)).slh_first)
答案 1 :(得分:1)
将您的代码更改为以下代码:
fd = open(YOURFILE,'r')
lines = readlines()