通常出现这种警告是因为函数的参数类型与调用时提供的实参类型不匹配。要解决这个问题,可以通过以下几种方式来进行处理:
例如,在下面的示例中,函数的形参为 double 类型,但在调用时提供了 int 类型的实参,这会导致'不兼容的指针类型”的警告。
// 声明函数
void printNumber(double num) {
printf("%f\n", num);
}
// 调用函数
int main() {
int a = 10;
printNumber(a); // 这里会出现'不兼容的指针类型”的警告
return 0;
}
要解决这个问题,可以将函数的参数类型从 double 更改为 int,如下所示:
void printNumber(int num) {
printf("%d\n", num);
}
例如,在下面的示例中,函数的形参 type 为 char * 类型,但是在调用时传递的是'Hello”字符串常量的地址,这会导致'不兼容的指针类型”的警告。
int strLength(char *type) {
return strlen(type);
}
int main() {
int length = strLength("Hello"); // 这里会出现'不兼容的指针类型”的警告
printf("Length: %d\n", length);
return 0;
}
要解决这个问题,可以将函数的形参类型更改为 const char *,使其与传递的字符串常量的类型匹配:
int strLength(const char *type) {
return strlen(type);
}
或者可以使用强制类型转换来将传递的参数类型更改为函数形参的类型,如下所示:
int length = strLength((char*)"Hello");
下一篇:不减少功能的领导者键