Несмотря на то, что я включил '#include' в свой код, когда я использую встроенную функцию qsort, clang выдает мне ошибку:
schedule.o: In function `chooseTicket':
schedule.c:(.text+0x16d): undefined reference to `qsort'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
начало файла (schedule.c) выглядит так:
#include "sched.h"
#include "schedproc.h"
#include <assert.h>
#include <minix/com.h>
#include <machine/archtypes.h>
#include <stdlib.h>
#include <lib.h>
#include <string.h>
#include <time.h>
а вот функция, в которой я использовал встроенную функцию qsort
int chooseTicket(int* ticketList,int length,int totalTicket){
int randomValue;
int temp=0,prevTemp=0,selectedTicket=0,selectedIndex = 0;
time_t t;
struct schedproc *rmp;
int* sortedTicketList = malloc(length*sizeof(int));
memcpy(sortedTicketList,ticketList,length);
srandom((unsigned)time(&t));
randomValue = (random() % totalTicket);
qsort(sortedTicketList,length,sizeof(int),cmpFunc);//this line
примечание: те же ошибки также возникали для функций «rand ()» и «srand ()», и вместо этого я использовал «random ()» и «srandom ()», после чего проблема была решена. Я не понимаю, несмотря на то, что 'rand()' и 'srand()' являются общепринятыми функциями и заголовочный файл содержит эти функции, почему clang выдает мне ошибки связывания, когда я использую 'rand()' и 'srand( ).
srandom((unsigned)time(&t));
вmain()
. Вы должны заполнить ГСЧ только один раз. - person Weather Vane   schedule 16.12.2016srandom()
на то, что у вас есть в качестве функцииinit
. Хуже всего — заполнять ГСЧ каждый раз, когда вам нужно случайное число. - person Weather Vane   schedule 16.12.2016static int seeded = 0;
в функциюrandom()
и сделайте посев зависимым от этого. - person Weather Vane   schedule 16.12.2016malloc
. - person n. 1.8e9-where's-my-share m.   schedule 16.12.2016