При выполнении программы PTHREAD в C с использованием Visual Studio 2015, я получил следующее сообщение об ошибке:TimeSpec ошибка переопределение
Error C2011 'timespec': 'struct' type redefinition
Ниже мой код:
#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);
}
Файл заголовка pthread.h
содержит следующий код, относящийся к сроку:
#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 */
Нет другого заголовка f ile, который я использую, использует структуру timespec
, поэтому нет возможности переопределить. Нет никакого шанса на поврежденный файл заголовка, потому что он был загружен с веб-сайта с открытым исходным кодом pthread.
какой линии, что ошибка происходит на? – user3386109
@ user3386109 номер строки не указан, когда я нажимаю ошибку, она загружает следующее в pthreads cpp struct timespec { time_t tv_sec; long tv_nsec; }; –
Ошибки всегда имеют имена файлов и номера строк. Но в любом случае я бы сказал, что либо файл проекта поврежден, либо файлы заголовков системы повреждены. Ни один из них не может быть диагностирован через Интернет. – user3386109