尽管我的代码可以正常运行,但是我收到了不兼容指针类型的错误警告。首先,这里是我代码的简化版本:
typedef struct {
int field1;
int field2;
} my_struct;
void some_function(void **data){
// do something with *data
}
int main(int argc, char *argv[]){
my_struct *ptr = malloc(sizeof(my_struct));
ptr->field1 = 5;
ptr->field2 = 17;
some_function(&ptr);
}
my_struct
类型是一个示例,但我实际上使用了多个类型,因此some_func
必须接受void**
而不是my_struct**
。每次以上述方式调用some_func
时,我都会收到以下警告,但我的代码可以正常工作。
warning: passing argument 1 of ‘my_func’ from incompatible pointer type
我不确定为什么这些类型不兼容,并希望以某种方式消除警告。如有答案,请自由解释为什么会发生这种情况,如果可能的话,如何消除警告(cpp指令,也许?)。谢谢!
&(void *)
并不存在。&
只是一个运算符,而不是类型的一部分。 - Oliver Charlesworth&(void *)
是指&(some_pointer)
的结果。感谢您的快速回复 - 我刚开始学习 C 语言。 - Douglas Adam Smith II