c에서 typedef sturct 큐에 삽입하는 것에대한 문제 ..
글쓴이: Sailor_moon / 작성시간: 월, 2011/10/10 - 3:34오후
안녕하세요 ...구조체에 뭔가 에러가 나네요 ... 봐주시면 감사하게ㅆ습니다...
#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];
초보인지라 자주 질문만 해서 너무 죄송해요 .....
그래도 이곳에서 하나하나 배워가는 재미에 계속 공부하는 중입니다 ... 도움 부탁드려요 ...
Forums:


댓글 달기