如何在C中存储void的返回值?

时间:2017-05-10 10:06:17

标签: c return-value void function-call

如何在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.
}

3 个答案:

答案 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;
}

我建议你刷指针语法;你的问题(如果我现在理解正确;真的很难说)背叛了对如何使用指针类型缺乏了解。