不兼容的点类型将'void *(int)'传递给参数类型'void *(*)(void *)'

时间:2019-04-09 21:03:03

标签: c operating-system

我在确定主要警告的原因时遇到了麻烦: 传递不兼容的指针类型

      'void *(int)' to parameter of type 'void *(*)(void *)'[-Wincompatible-pointer-types]
  ...pthr`ead_create(&philosophers[k], &tattr[k], *philosopherSeat, (void *)(k));

/usr/include/pthread.h:313:11: note: passing argument to parameter here
                void *(*)(void *), void * __restrict);

我试图重新定义主体中的方法以适合错误的标准,但这没有用。

int main() {
    int k;
    for (k = 0; k < Philo; ++k) {
        pthread_mutex_init(&forks[k], 0);
    }
    for (k = 0; k < Philo; ++k) {
        pthread_create(&philosophers[k], &tattr[k], philosopherSeat, (void *)(k));
    }
    for (k = 0; k < Philo; ++k) {
        pthread_join(philosophers[k], 0);
    }
    return

我的philosopherSeat方法如下:

void philosopherSeat(int seat) {
    while (1) {
        think(seat);
        grab(seat);
        eat(seat);
        drop(seat);
    }
}

和“哲学家”是一种方法,定义为:

pthread_t philosophers[Philo];

我希望该程序运行无错误。

0 个答案:

没有答案