warning: passing argument 3 of ‘pthread_create’ from incompatible pointer type [-Wincompatible-pointer-types] 389 | ret = pthread_create(&pid, NULL, &wait_irq, (void*)&args); | ^~~~~~~~~ | | | void * (*)(struct thread_args *)
时间: 2024-02-11 16:08:11 浏览: 39
这个警告通常是因为你传递给pthread_create函数的第三个参数的类型与函数指针的类型不匹配。pthread_create函数的第三个参数应该是一个指向函数的指针,该函数接受一个void指针参数并返回一个void指针,而你传递给它的参数类型与此不匹配。
你可以检查一下wait_irq函数的声明和定义,确保它的类型是正确的。如果wait_irq函数的定义与声明不匹配,你可以修改它们来匹配pthread_create函数需要的函数指针类型。
另外,你可以将wait_irq函数封装在一个结构体中,并将指向该结构体的指针作为pthread_create函数的第三个参数传递。这样可以避免类型不匹配的问题。
相关问题
passing argument 3 of 'Least_Square' from incompatible pointer type [-Wincompatible-pointer-types]
这个错误一般是因为函数调用时传递的参数类型与函数声明的参数类型不一致,导致编译器报出该错误。
比如说,函数声明如下:
```c
void Least_Square(double *x, double *y, double *coefficients);
```
如果在调用该函数时,传递的第三个参数类型不是 `double*` 类型,就会出现这个错误。例如:
```c
double coefficients[2];
Least_Square(x, y, coefficients); // 错误:第三个参数类型不是 double*
```
正确的做法是将第三个参数传递为 `double*` 类型,例如:
```c
double *coefficients;
coefficients = malloc(2 * sizeof(double)); // 申请内存
Least_Square(x, y, coefficients); // 正确:第三个参数类型为 double*
free(coefficients); // 释放内存
```
或者在函数调用之前,先定义一个 `double` 类型的数组,再将数组名作为第三个参数传递给函数。例如:
```c
double coefficients[2];
Least_Square(x, y, coefficients); // 正确:第三个参数类型是 double*
```
这样就可以避免这个错误了。
passing argument 3 of 'ConvertBoolArrayToMBByteArray' from incompatible pointer type [-Wincompatible-pointer-types]
这个错误信息的意思是你在调用函数 `ConvertBoolArrayToMBByteArray` 时第三个参数的指针类型与函数声明中的指针类型不兼容。需要检查一下函数声明和调用中第三个参数的指针类型是否一致。
可能的原因是你在函数声明和函数调用中使用了不同的指针类型,或者是在调用函数时传递的参数类型与函数声明中定义的类型不同。
你可以检查一下函数声明和函数调用中第三个参数的指针类型,确保它们是一致的。如果类型不同,需要进行类型转换才能调用函数。