Timespec:struct type错误c2011

时间:2015-10-14 00:00:34

标签: c visual-studio pthreads

使用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);
}

5 个答案:

答案 0 :(得分:7)

添加此编译器标志:

-DHAVE_STRUCT_TIMESPEC

答案 1 :(得分:3)

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

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

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

#define HAVE_STRUCT_TIMESPEC
#include <pthread.h>

答案 2 :(得分:1)

在Visual Studio 2015中编译包含MariaDB 10头文件的程序时会出现同样的问题(使用10.1.14查看)。

解决方案是定义以下内容:

class AutoCompleteResult: Mappable {
    var result:[AutoComplete]?

    required init?(_ map: Map) {

    }

    func mapping(map: Map) {
        result <- map["result"]
    }

}

class AutoComplete: Object, Mappable {
    dynamic var search: String?

    required convenience init?(_ map: Map) {
        self.init()
    }


    func mapping(map: Map) {
        //var categories: [Int]? = nil
        search <- map[""]
    }

}

答案 3 :(得分:0)

在Visual Studio 2015上。

我解决了添加问题:

#define _TIMESPEC_DEFINED

答案 4 :(得分:-5)

删除pthread.h中所有'TIMESPEC'的实例(先备份。)

如果我理解正确,你可能已经下载了pthread并尝试将其安装到你的VS.

但是pthreads.h文件与其他头文件中已经定义的TIMESPEC定义不能很好地配合。

因此,删除定义了TIMESPEC的pthreads.h文件部分。