【发布时间】:2013-12-11 01:06:23
【问题描述】:
我有一个函数,它接受一个 void * 缓冲区作为参数,并且必须将它传递给另一个接受 unsigned char* 的函数。以下是事件链:
unsigned char data[4];
populate(&data);
void populate (void * buf)
{
...
unsigned char * datump = ((unsigned char * )buf);
if ( Unwrap(datump) )
{...}
}
bool Unwrap (unsigned char* buf)
{
...
}
当我继续执行以下操作时:Unwrap ((unsigned char *)buf),它失败并显示“没有对 Unwrap[(unsigned char*) 的匹配函数调用。 但是,如果我像在代码中那样使用转换,它就可以工作!这是为什么呢?
问题是现在我必须做点什么(也请帮忙!)将数据从 unsigned char * 复制到 void *。
非常感谢任何帮助。
【问题讨论】:
-
我不明白为什么它不适用于演员阵容。这似乎很奇怪。
-
在
data中不使用&试试。data == &data[0]. -
在代码中显示失败的上下文。指定您是使用 C 还是 C++ 进行编译。 “Unwrap[(unsigned char*)”中的
[是什么错字?有哪些其他错别字? -
请分享头文件中的声明。我的猜测是它与实现略有不同。