ここでタスクをチェーンしようとしていますが、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
}
}