Timespec:struct type错误c2011

Vij*_*har 7 c pthreads visual-studio

使用Visual Studio 2015在C中执行Pthread程序时出现以下错误

错误C2011'timespec':'struct'类型重新定义

以下是我的代码:

#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);
}
Run Code Online (Sandbox Code Playgroud)

use*_*r_0 7

添加此编译器标志:

-DHAVE_STRUCT_TIMESPEC
Run Code Online (Sandbox Code Playgroud)


Nut*_*ker 7

尽管这个问题已经得到了正确的回答,但还有另一种方法可以解决这个问题。

首先,出现问题是因为pthreads-win32内部包含time.h已经声明了timespec struct.

为了避免这个错误,我们唯一应该做的是:

#define HAVE_STRUCT_TIMESPEC
#include <pthread.h>
Run Code Online (Sandbox Code Playgroud)