如何从一个空函数中获取值
How to obtain value from a void function?
我想使用在主函数中调用的预定义函数。这个预定义的函数从接收到的数据包中获取一些值,比如我想在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 *);
并通过参数返回适当的数据(通过引用传递)
相关文章:
- constexpr 函数获取常量字符*
- 在 C++ 中将函数获取和设置为虚拟函数
- 函数获取参数的变量列表并将它们转换为一系列字节?
- 如何在C++中从Lua函数获取返回表?
- C++使用第二个函数获取字符数组的长度
- 在编译时通过 constexpr 或模板函数获取多维 std::array 的大小
- 包装 C API 通过C++接受迭代器的函数获取原始指针
- 如何指定创建文件函数获取未缓存的结果?
- 从函数获取 char* 后的条件 gdb 断点
- 如何在不使用返回的情况下从函数获取变量的地址(指针)
- RCPP:将布尔值传递在列表中从R到C 函数的错误,该函数获取RCPP ::列表
- 从 Rcpp c++ 函数获取 r 函数参数
- 如何从子例程函数获取到 main 函数的返回值
- 使用 getline 函数获取分段错误
- 如何使用getForegroundWindow函数获取模块
- C++,无法使用 .size() 函数获取有效的矢量大小
- 如何从调用的函数获取返回值,该函数在 TBB 中的另一个线程中执行
- 如何使用C或C++函数获取特定文件夹中的文件数
- 如何在 c++ 中从函数获取返回值而不为其变量赋值
- 如何使用strlen函数获取字符串的长度