大意外的u16_t,但是



我有一个C函数调用指向函数的指针(指向buf的指针和buf的大小)

printf("------------------------------n");
printf("lengh of DATA_output = %zun", p->tot_len);
(*myStr.OnSendData)(buf, p->tot_len);
printf("------------------------------n");

指向像

那样定义的函数的指针
typedef void (*pOnSendData)(void *buf, u16_t len);

然后我真正的c++类方法通过指针得到它:

void Someclass::myPOnSendData(void *buf, u16_t len) {
std::cout << " Someclass::mypOnSendData len = " << (int)len << std::endl;
//Do something
}

问题是buflen相当大。

输出为:

------------------------------
lengh of DATA_output = 42
------------------------------
Someclass::myPOnSendData len = 50512

这怎么可能呢?

您说myPOnSendData不是静态成员函数,但您试图将指向它的指针分配到C指针到函数。这是行不通的,因为指向函数的c风格指针不支持非静态成员函数。

如果将函数更改为静态,则它将与指针类型兼容。

请注意,由于当前类型不兼容,在尝试分配函数指针时可能会得到错误消息,并且必须执行强制类型转换来绕过它。不要这样做,因为你只是隐藏错误,而不是解决它。

相关内容

  • 没有找到相关文章

最新更新