【发布时间】:2014-09-19 16:58:35
【问题描述】:
我有一个调用函数指针的 C 函数(带有指向 buf 的指针和 buf 的大小)
printf("------------------------------\n");
printf("lengh of DATA_output = %zu\n", 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
}
问题在于buf 中的len 相当大。
输出是:
------------------------------
lengh of DATA_output = 42
------------------------------
Someclass::myPOnSendData len = 50512
怎么可能?
【问题讨论】:
-
为什么人们仍然认为 C/C++ 是一门语言?
-
@ValentinMercier 在我头上。如果不是语言,什么是 C/C++?
-
void (*)(void *, size_t)与void (*)(void *, u16_t)不兼容 -
对不起,两者都是 u16_t 。已修复
-
@Fiddling,C 和 C++ 不是同一种语言,而且从来都不是:从第一天起,就有 C++ 编译器无法编译的有效 C 程序,显然反之亦然。
标签: c++ c pointers c-libraries