如何从一个空函数中获取值

How to obtain value from a void function?

本文关键字:函数 获取 一个      更新时间:2023-10-16

我想使用在主函数中调用的预定义函数。这个预定义的函数从接收到的数据包中获取一些值,比如我想在main函数中使用的来自接收者的时间戳。然而,问题是这个预定义的函数是void类型的,不能返回任何东西。我正在考虑使用全局变量的概念,因为局部变量在这种情况下会失败。有人能给一个例子来实现这个东西吗?

如果函数是预定义的,它必须已经有一个预定义的返回结果的方式。

void函数返回结果的一种可能方式是它的形参之一是指针。然后,它可以将结果放在该指针所指向的对象中。

使用下列函数:

void f(int *a)
{
    *a = 5;
}

它将修改a,但将返回void。

如果使用c++,最好使用reference:

void f(int &a)
{
    a = 5;
}

你应该尽量避免使用全局变量,因为你将不得不做出额外的努力使它们线程安全,而且它们是一种不好的做法(使代码难以遵循,容易引入bug等)。

可以使用指针或更改返回值(无论哪种方式,都必须更改函数原型)。另一种解决方案是定义另一个函数,该函数调用"违规"的函数(您试图更改的那个)并在那里处理结果,然后继续使用原始参数执行原始函数,因此您的函数a()将返回您需要的任何内容,但在内部调用b()(返回void的那个)

如果你想知道如何使用全局变量:


int gGlobalValue;
void funcion()
{
  int returnValue = 1; // Or whatever
  gGlobalValue = returnValue;
}

这是一种不可维护的,做你想做的事情的糟糕方式,但这里是

如果你想要一些通用的回调,你可以使用这个原型:

void (*callback)(void *);

并通过参数返回适当的数据(通过引用传递)