Ciao ragazzi,
volevo chiedervi un aiuto con C...premetto che sto iniziando adesso a studiare il linguaggio C e, dato che ho Windows XP, ho installato Dev C++.
Quando però compilo un file mi dà tanti errori e non posso mandarlo in esecuzione.
Vi spiego passo passo cosa faccio io, così vedo dove sbaglio.
Allora innanzittuto eseguo questi passi:
FILE-NUOVO-FILE SORGENTE e scrivo il mio bel programmino, che posto qui di seguito:
poi lo salvo:museo.c e clicco su:ESEGUI-COMPILA:codice:#include<pthread.h> #include<stdio.h> #include<stdlib.h> #include<limits.h> #include<unistd.h> #include<errno.h> #define MAX_TURISTI 5 typedef struct { pthread_mutex_t gioconda; pthread_cond_t turno; int numturisti,turistiSosp; }louvre; louvre v; void init(louvre * L) { pthread_mutex_init(&L->gioconda,NULL); pthread_cond_init(&L->turno,NULL); L->numturisti=0; L->turistiSosp=0; } void EntraTurista(void * a) { struct timeval now; struct timespec timeout; gettimeofday(&now,NULL); timeout.tv_sec=now.tv_sec+rand()%6; timeout.tv_nsec=now.tv_usec*1000; int retcode; pthread_cond_timedwait(&(v.turno),&(v.gioconda),&timeout); pthread_mutex_lock(&(v.gioconda)); if (v.numturisti<=5) { ++v.numturisti; printf("Un turista entra\n In totale ci sono %d turisti \n",v.numturisti); guarda(&v); } else if(v.numturisti>5) { v.turistiSosp++; printf("Un turista aspetta fuori\n In totale ci sono %d turisti che aspettano \n\n",v.turistiSosp); retcode=pthread_cond_wait(&(v.turno),&(v.gioconda)); v.turistiSosp--; } printf("Un turista esce \n"); pthread_mutex_unlock(&(v.gioconda)); } void guarda(louvre * _v) { if(_v->numturisti<=5) { pthread_mutex_lock(&(_v->gioconda)); printf("Ci sono %d turisti che guardano la gioconda \n",_v->numturisti); _v->numturisti--; pthread_cond_signal(&(_v->turno)); } } int main() { pthread_t visitor[50]; init(&v); int i; for(i=0;i<50;i++) { pthread_create(&visitor[i],NULL,EntraTurista,NULL); sleep(3); } for(i=0;i<50;i++) { pthread_join(visitor[i],NULL); } exit( 0); }
Appena compilo mi escono tutti una serie di errori:
No such file or directory.
14 museo.c syntax error before "pthread_mutex_t"
14 C:\Documents and Settings\user\Documenti\museo.c [Warning] no semicolon at end of struct or union
15 C:\Documents and Settings\user\Documenti\museo.c [Warning] data definition has no type or storage class
17 C:\Documents and Settings\user\Documenti\museo.c syntax error before '}' token
20 C:\Documents and Settings\user\Documenti\museo.c syntax error before "v"
ed altri errori.
Coma mai?dove sbaglio?
Grazie mille a tutti in anticipo

Rispondi quotando

