尝试将p_thread id转换为int时,将int *无效地转换为int

时间:2020-10-07 02:53:57

标签: c++ linux gcc

对于我正在编写的某些代码,我试图获取一个线程,但是我一直遇到错误。我正在Visual Studio代码中在Linux上编程。

这是代码:

void* start(void *s) {
    int me = (int*)s;
    //int me = pthread_self();
    printf("Entered: %d\n", me);

    Lock(me);

    printf("TEST 1");
    for (int i = 0; i<MAX; i++) ans++;
    printf("TEST 2");

    Unlock(me);
    printf("TEST 3");

    return NULL;
}


pthread_create(&thread1, NULL, start, (void*)0);
pthread_create(&thread2, NULL, start, (void*)1);

pthread创建在main方法内部。我收到的错误:

错误:从“ int *”到“ int”的无效转换[-fpermissive] 49 | int me =(int *)s; | ^ ~~~~~~ | | | int *

1 个答案:

答案 0 :(得分:0)

int*是指向值的指针,而不是值本身。您已经传递了一个值转换为指针,应该将其转换回一个值:

int me = reinterpret_cast<int>(s);