如何在main中存储void函数的值?
示例
void UsartCallback (uchar* buf, uint len)
{
return void(*buf);
}
int main()
{
UsartCallback(&buf,1); // I can get values from void function but how to store this "*buf" value
// For Example
uchar* data=UsartCallback(&buf); //Error: but i want get only "buf" value from void function.
}
答案 0 :(得分:2)
你可能想要这个:
void *UsartCallback (uchar* buf, uint len)
{
return (void*)buf;
}
int main()
{
uchar *mybuf = UsartCallback(&buf,1);
}
答案 1 :(得分:0)
这是无效代码,因为它违反了约束。
引用C11
,章节§6.8.6.4
带有表达式的
return
语句不应出现在返回类型的函数中 是void
。 [...]
答案 2 :(得分:0)
你不能。没有"无效值"。 void
缺少价值。确实看起来像你正在回归"事情"在这里,但你不是。
在C中,这是非法的,您的程序甚至无法编译。
在C ++中,代码被接受为"古怪"语法(这是为了使模板更容易实现)。您的行与return;
实际上相同。
好的,有没有办法得到" buf"来自虚空的价值,我想将其存储在" main" .. 可能吗 ?
好的,现在完全不同的问题。
buf
是一个指针。所以,是的,只需返回它。据推测,你的回调需要通过一些外力返回void*
?
void* UsartCallback (uchar* buf, uint len)
{
return buf;
}
我建议你刷指针语法;你的问题(如果我现在理解正确;真的很难说)背叛了对如何使用指针类型缺乏了解。