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:
댓글 달기