所以我试图在这里链接任务,但在linux下使用GCC编译时,我收到了警告:来自不兼容指针类型的赋值[默认启用]。尽管我只是在使用相同类型的指针。
typedef struct
{
void (*routine)(void*);
void* data;
struct p_task* next;
struct p_task* prev;
int deadline;
int timeWaiting;
}p_task;
typedef struct
{
pthread_t mainThread;
pthread_t* threadArray;
int threadCount;
p_task* firstInLine;
p_task* lastInLine;
}p_pool;
void pool_add_task(p_pool* pool, void* routine, void* data)
{
// create new task
p_task* task = malloc(sizeof(p_task));
task->routine = routine;
task->data = data;
task->deadline = 5;
task->timeWaiting = 0;
// when no tasks are chained yet
if (pool->firstInLine == NULL)
{
pool->firstInLine = task;
pool->lastInLine = task;
}
else
{
pool->lastInLine->next = task; // bad line 1
task->prev = pool->lastInLine; // bad line 2
pool->lastInLine = task; // new task is last in line
}
}
这是因为struct p_task
是前向声明的,因为在结构的定义中没有使用它。这意味着编译器不知道
-
它确实存在于所有
-
它与(馈送到)CCD_ 3类型的CCD_。
你需要写这个:
typedef struct p_task
{
// etc.
} p_task;