【发布时间】:2015-09-26 02:23:38
【问题描述】:
我正在构建一个依赖队列的小文件实用程序,但在编译时出现错误:
error: request for member "entries" in something not a structure or union
我将它剥离为仅队列处理行,我得到了同样的错误,这是标题的来源:
#ifndef _tailq_test_h
#define _tailq_test_h
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
#include <sys/queue.h>
struct tail_q {
TAILQ_ENTRY(tail_q) entries;
int item;
};
TAILQ_HEAD(tail_queue, tail_q);
static struct tail_queue queue;
int main();
#endif
对于程序:
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
#include <sys/queue.h>
#include "tailq-test.h"
static struct tail_queue queue;
int main()
{
struct tail_q *q_ptr;
int data = 1;
TAILQ_INIT(&queue);
TAILQ_INSERT_HEAD(&queue, &data, entries);
return 0;
}
traceback指的是TAILQ_INSERT_HEAD(&queue, &data, entries);这一行,如果用TAILQ_INSERT_TAIL代替,效果是一样的。
我不确定为什么它没有编译。我检查了this question 的答案,提供的示例编译得很好。我无法发现差异/我做错了什么。
任何帮助将不胜感激。
【问题讨论】:
-
这就是我在上面的问题中引用的问题/答案。该示例可以编译,但我的代码没有,而且我无法分辨出不同之处。
-
我觉得你应该仔细看看,有一些不同。我最初没有注意到您问题中的链接 - 抱歉