我正在尝试将文件名传递给线程函数,但它的类型在函数内转换为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]);
}
Run Code Online (Sandbox Code Playgroud)
你错过了一个*:char file_name;应该是char *file_name;编译器警告你它是一个int而不是一个在varargs char中char被隐式提升的原因int.
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |