Durante l'esecuzione di un programma Pthread in C utilizzando Visual Studio 2015, ho ottenuto il seguente errore:errore di ridefinizione timespec
Error C2011 'timespec': 'struct' type redefinition
Quello che segue è il mio codice:
#include<pthread.h>
#include<stdlib.h>
#include<stdio.h>
void *calculator(void *parameter);
int main(/*int *argc,char *argv[]*/)
{
pthread_t thread_obj;
pthread_attr_t thread_attr;
char *First_string = "abc"/*argv[1]*/;
pthread_attr_init(&thread_attr);
pthread_create(&thread_obj,&thread_attr,calculator,First_string);
}
void *calculator(void *parameter)
{
int x=atoi((char*)parameter);
printf("x=%d", x);
}
Il file di intestazione pthread.h
contiene il codice seguente relativo a timespec:
#if !defined(HAVE_STRUCT_TIMESPEC)
#define HAVE_STRUCT_TIMESPEC
#if !defined(_TIMESPEC_DEFINED)
#define _TIMESPEC_DEFINED
struct timespec {
time_t tv_sec;
long tv_nsec;
};
#endif /* _TIMESPEC_DEFINED */
#endif /* HAVE_STRUCT_TIMESPEC */
Nessun'altra intestazione f ile che utilizzo utilizza la struttura timespec
, quindi non c'è possibilità di ridefinizione. Non c'è possibilità di un file di intestazione corrotto perché è stato scaricato dal sito Web di pthread opensource.
Quale linea si è verificato che l'errore su? – user3386109
@ user3386109 non è indicato alcun numero di riga, quando faccio clic sull'errore si sta caricando quanto segue in pthreads cpp struct timespec { time_t tv_sec; long tv_nsec; }; –
Gli errori hanno sempre nomi di file e numeri di riga. In ogni caso, direi che il file di progetto è corrotto o che i file di intestazione del sistema sono stati danneggiati. Nessuno dei quali può essere diagnosticato su Internet. – user3386109