Я пытаюсь пройти имя файла в функцию резьбы, но это тип преобразован в INT внутри функции

struct Data {
    char file_name;
}
void *Requestor(void *args) {
    struct Data *data = (struct Data*)args;
    printf("%s\n", data->file_name); //says expected char* but argument is type of int
}

int file_count = 5;
struct Data files[file_count];

for (int i = 0; i < file_count; i++) {
    printf("%s\n", argv[5 + i]); //this prints the file_name correctly;
    files[i].file_name = argv[5 + i]; // I get: warning: assignment makes integer from pointer without a cast [-Wint-conversion when compiling
    int thread = pthread_create(&(requesterThreads[i]), NULL, Requestor, &files[i]);
}
c
0
Magna 12 Мар 2018 в 07:01

1 ответ

Лучший ответ

Вам не хватает *: char file_name; должен быть char *file_name; Причина, по которой компилятор предупреждает вас, что это int вместо char это то, что {{x5 }} неявно продвигается на int при использовании в варергах.

5
Andrew Sun 12 Мар 2018 в 07:09