While executing a Pthread program in C using Visual Studio 2015.I got the following error
Error C2011 'timespec': 'struct' type redefinition
The following is my code:
#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);
}
Despite this question is already answered correctly, there is also another way to solve this problem.
First, problem occurs because
pthreads-win32
internally includestime.h
which already declarestimespec struct
.To avoid this error the only thing we should do is this:
Delete all instances of 'TIMESPEC' in pthread.h (Make a backup first.)
If I understand it correctly, you probably downloaded pthreads and tried installing it into your VS.
But the pthreads.h file doesn't play nicely with the TIMESPEC defintions already defined in some other header file.
So, delete the portions of the pthreads.h file where TIMESPEC is defined.
Add this compiler flag:
The same problem happens when compiling programs in Visual Studio 2015 that include MariaDB 10 header files (saw it with 10.1.14).
The solution there is to define the following: