2014-11-11 3 views
-1

Привет, ребята, у меня возникают проблемы с этим кодомC Тем создание выпуск

int file_id; 

void* wraper(void* p){ 
    return (void)reader((int)p); 
} 

int main(int argc, char *argv[]){ 
srandom ((unsigned) time(NULL)); 
int i; 
pthread_t tid[3]; 
for(i=0;i<3;i++){ 
    pthread_t * temp = malloc(sizeof(tid[i])); 
    file_id=get_random(NB_FILES); 
    pthread_create(&tid[i], NULL,wraper,(void*)file_id); 
} 

и компилятор дает мне этот

reader-thread.c: In function ‘wraper’: 
reader-thread.c:59:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] 
    return (void)reader((int)p); 
         ^
reader-thread.c:59:5: error: void value not ignored as it ought to be 
    return (void)reader((int)p); 
    ^
reader-thread.c: In function ‘main’: 
reader-thread.c:70:46: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] 
      pthread_create(&tid[i], NULL,wraper,(void*)file_id); 
              ^

Цель состоит в том, чтобы создать 3 темы и отправить их file_id к читателю функции, я не вижу, что я делаю неправильно

+0

И как объявляется 'reader()'? И почему вы возвращаете значение, которое вы наложили на 'void' ?! – unwind

+0

читатель объявляется с читателем (int file) {...} –

ответ

1
  1. Ваш компилятор прав, вы не должны игнорировать это, на многих указателях архитектуры и int не имеют такой же ширины. Правильный тип, если вам действительно нужно, - использовать uintptr_t или intptr_t.
  2. Кроме того, возврат функции (которой вы нам не показали) до (void) не имеет смысла, если вам нужно вернуть void*.
  3. Кастинг другой путь вокруг от int к void* почти так же плохо, как 1.

В сущности, вы не должны пытаться нарушать интерфейс вызова для функций резьбы. Если вам нужно передать данные, передайте указатель на данные.

Также, пожалуйста, при размещении вопроса здесь, убедитесь, что сообщения об ошибках соответствуют указанному вами коду.

+0

Это действительно соответствует, я просто забыл перевести функцию, называемую leitor, читателю –

Смежные вопросы