C, error of compilation during using “usleep” function
我使用Ubuntu Linux。当我尝试使用" usleep"函数时,会收到有关"函数usleep的隐式声明"的信息。下面是错误代码:
1 2 3 | muteks.c:70:4: warning: implicit declaration of function ‘usleep’ [-Wimplicit-function-declaration] usleep(300); ^ |
源代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | #include <stdlib.h> #include <stdio.h> #include <time.h> #include <pthread.h> void * klientWatek (void* arg); pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; static int lKf = 10; int lKl = 15; int main () { pthread_t *klientTab; int *klientTabId; int lKr = 1; int i; // pami?? dla identyfikatora w?tku klientTab = (pthread_t *) malloc (lKl* sizeof (pthread_t)); klientTabId = (int *) malloc (lKl*sizeof (int)); //pami?? dla id // b?d?cego argumentem przekazywanym do funkcji for (i=0; i<lKl; i++) klientTabId[i]=i; //przypisanie printf("\ Otwieramy pub (simple)!\ "); printf("\ Liczba wolnych kufli %d\ ", lKf); for (i=0; i<lKl; i++) { pthread_create (&klientTab[i], NULL, klientWatek, &klientTabId[i]); } for (i=0; i<lKl; i++) { //w?tek joinable, r?cznie zwalniamy zasoby pthread_join (klientTab[i], NULL); } printf("\ Zamykamy pub!\ "); printf("\ Liczba wolnych kufli %d\ ", lKf); void * klientWatek (void * argWsk)//zostanie przekazany klientTabId[i] { int mojId = * ( (int *) argWsk); int i,j; int pobranoKufel = 0; int ileMuszeWypic = 2; printf ("\ Klient %d, wchodz? do pubu\ ", mojId); for (i=0; i<ileMuszeWypic; i++) { do { pthread_mutex_lock(&mutex); if (lKf > 0) { printf("\ Sprawdzi?em, czy jest wolny kufel\ "); lKf--; pobranoKufel = 1; printf("\ Wzi??em kufel\ "); } pthread_mutex_unlock(&mutex); } while (pobranoKufel == 0); printf("\ Klient %d, wybieram kufel\ ", mojId); j=0; printf("\ Klient %d, nalewam z kranu %d\ ", mojId, j); usleep(300); printf("\ Klient %d, pije\ ", mojId); nanosleep((struct timespec[]){{0, 500000000L}},NULL); printf("\ Klient %d, odkladam kufel\ ", mojId); if (pobranoKufel == 1) { pthread_mutex_lock(&mutex); pobranoKufel=0; lKf++; pthread_mutex_unlock(&mutex); } } printf("\ Klient %d, wychodz? z pubu\ ", mojId); return (NULL); } |
我尝试编译程序的方式:
1 | gcc -Wall -pedantic -std=gnu99 -pthread muteks.c -o przyklad |
现在我该怎么做才能编译?
在未包含的标准头文件
1 | #include <unistd.h> |
相关说明:
1 | #include <unistd.h> |
见男人不眠