![](/img/trans.png)
[英]linked list c++ difference between void function and return this
[英]C++ - Is there a difference between declaring a function's return value as void/void* when used in a thread?
将函数的返回值声明为 void/void* 与std::thread
一起使用是否有区别?
void encrypt(/*arguments*/)
{
}
// ...
std::thread(encrypt, /*arguments*/);
我读了一些关于在处理线程时使用void*
,所以我想确保我使用的是void
而不是void*
有充分的理由。
就在这里。 例如这个函数:
void func() { }
形成良好。 另一方面,这个:
void* func() { }
违反语言限制,并且格式错误。 区别? 您不能省略 return 语句,否则您的程序将具有未定义的行为。
在这种情况下, void
指定缺少返回类型,但void*
是完整类型,因此您必须指定要返回的函数的值。
在std::thread
的上下文中,您应该将其指定为void
。 无论如何,任何返回值都会被忽略,所以只要保持程序的格式良好,不要仅仅为了它而返回无意义的东西。
如果您在网上阅读有关 Pthreads 的任何信息,那么他们确实希望有一个既接受又返回void*
的回调。 这样它们就可以支持任何参数和任何返回类型。 但那是一个 C API,所以它必须这样做。 std
惯用的 C++ API 是类型感知的。 所以它是void
的。 如果您确实关心返回值,请查看std::future
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.