c에서 typedef sturct 큐에 삽입하는 것에대한 문제 ..

Sailor_moon의 이미지

안녕하세요 ...구조체에 뭔가 에러가 나네요 ... 봐주시면 감사하게ㅆ습니다...

#define STATUS_WAITING 100
#define TO_H_CITY 200
...
typedef struct cars_list {         //차들을 구조체로 선언합니다. 방향과 상태를 가집니다 ..
    int status;
    int direction;
    struct cars_list* next;
} CARS;
 
이렇게 선언을 하여ㅆ구요 ..
 
CARS *queue = NULL;             // 전역변수들 ...
CARS *queue_H = NULL;            
void enqueue(CARS* member);
CARS* dequeue(CARS* queue);
void enqueue_H(CARS* member);
CARS* dequeue_H(CARS* queue);

각각의 방향별로 두가지 큐(queue , queue_H) 를 만들어서 , 랜덤하게 생성하여 해당하는 방향의 큐에 각각 담으려고 합니다.메인함수에서 그래서 ..아래와 같은 함수를 호출하였는데 ..
난수를 발생시켜서 일단 넣어보려고하니 , 에러가 발생합니다.
에러 메시지는 다음과 같습니다 ....

gcc -g -o hw2 hw2.c hw2.h -lpthread
hw2.c: In function ‘generate_Cars’:
hw2.c:35:4: error: incompatible type for argument 1 of ‘enqueue_H’
hw2.h:45:6: note: expected ‘struct CARS *’ but argument is of type ‘CARS’
 
 
 
 
main ()
{
...
generate_Cars();
...
}
void generate_Cars()
{
    int j;
    int val;
    for (j=0 ; j<MAX; j++){
        val = rand()%2; //generate radon values 0 or 1
        printf("%d\n", val);
 
        if (val==0){    //GENERATE HANOVER direction car
            CARS c= {STATUS_WAITING, TO_H_CITY, NULL};    // H 방향 자동차 ...
            enqueue_H(c);            // 요기서 문제발생 !!!
        }
 
        else {     
            printf("hello \n");
        }
    }
}

...

아래는 큐 삽입함수입니다...

void enqueue(CARS* member)        // put member cars to each queues ..
{
    CARS* t_list;
    CARS* s_list;
    if ( queue == NULL )
    {
        queue = (CARS*)malloc(sizeof(CARS));
        queue->status = member->status;
        queue->direction = member->direction;
        queue->next = queue;
    }
    else
    {
    // If there already exists one or more nodes...
        t_list = (CARS*)malloc(sizeof(CARS));
        queue->status = member->status;
        queue->direction = member->direction;
        t_list->next = queue->next;    // Find a last queue node... and add to there ...
        queue->next = t_list;
        queue = t_list;            // 새로운 노드의 다음을 queue의 처음을 가르키게 한다.
    }
 
} 

번외 질문입니다만 ;쓰레드를 차량갯수 만큼 만들기 위해 .. 아래처럼 배열로 하려고 하니 ... 에러가 나더군요 ;;;어떻게 생성하는것이 좋죠 ?

pthread_t[MAX];

초보인지라 자주 질문만 해서 너무 죄송해요 .....
그래도 이곳에서 하나하나 배워가는 재미에 계속 공부하는 중입니다 ... 도움 부탁드려요 ...