这个错误提示是因为函数rte_hash_lookup_data()
的第三个参数类型应该是void **
,但实际传入的参数类型为struct ipv4_route_hash_value *
。
这个问题可以通过将第三个参数地址取出来再进行传递来解决。具体做法如下:
struct ipv4_route_hash_value* route = ...; //获取一个ipv4_route_hash_value指针
void* data;
rte_hash_lookup_data(h, key, &data);
*route = *(struct ipv4_route_hash_value*)data;
以上代码将会把data
转换成ipv4_route_hash_value
结构体类型并赋值给指针变量route
, 从而避免了类型不匹配的问题。