2 ljwbupt ljwbupt 于 2016.04.12 23:47 提问

C++ 线程必须返回一个值

C++入门选手,学习线程时写了一小段代码,如下

```#include "stdafx.h"
#include

#include

using namespace std;

DWORD WINAPI Fun1(LPVOID lpParamter)
{
char* buf = (char *)lpParamter;
cout << int(buf) << endl;
Sleep(1000);
}

int main()
{
HANDLE hThread[2];
for (int i = 0; i < 2; i++) {
hThread[i] = CreateThread(NULL, 0, Fun1, (LPVOID)i, 0, NULL);
}
cout << "3" << endl;

Sleep(5000);
for (int i = 0; i < 2; i++) {
TerminateProcess(hThread[i],0);
CloseHandle(hThread[i]);
}
return 0;
}


在VS2015编译时报错,说“Fun1”: 必须返回一个值, 请问各位大神这是什么意思?我这程序应该怎么改?

2个回答

devmiao
devmiao   Ds   Rxr 2016.04.12 23:49
已采纳

DWORD WINAPI Fun1(LPVOID lpParamter)
{
char* buf = (char *)lpParamter;
cout << int(buf) << endl;
Sleep(1000);
return 0;
}

ljwbupt
ljwbupt 大神已经拯救我多次了,感动哭了
2 年多之前 回复
CSDNXIAON
CSDNXIAON   2016.04.12 23:52

执行更新版本获取服务器连接必须开启一个新的线程
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
error C4716: “operator<<”: 必须返回一个值
error C4716: “operator<<”: 必须返回一个值
如何获得线程的返回值?
最近在学习多线程编程技术过程中,遇到一个问题:如何获取线程的返回值? 线程定义之初:UINT Class::Thread(LPVOID lpParam)                               {                                       return bResult;                                 }
linux c 线程的创建与结束 (传参和返回值)
1. 线程的创建
下列哪些语句关于内存回收的说明是正确的? (b ) A、 程序员必须创建一个线程来释放内存
最易懂的设计模式解析:单例模式(Singleton) 前言今天我来全面总结一下Android开发中最常用的设计模式 - 单例模式。  关于设计模式的介绍,可以看下我之前写的:1分钟全面了解“设计模式”目录1. 引入1.1 解决的是什么问题之前说过,设...http://www.xiami.com/collect/207573283?spm=a1z1s.2929273.1561564893.2.v
创建线程以及怎样创建有返回值的线程
一、继承Thread类创建线程类    (1) 定义一个类并继承Thread,重写run方法,该run方法为该线程需要完成的任务,及线程的执行体。    (2) 创建该类的实例对象,及为创建了线程对象。    (3) 调用线程的start方法,及启动线程。package com; import java.util.ArrayList; import java.util.List; public...
operator=为什么要返回一个reference to *this
一、 函数返回值 说到operator=的返回值,那么先必须要说一下函数的返回值。函数的返回值用于初始化在调用函数处创建的临时对象。 1、 返回引用类型             Test Fun() {             return Test;       }       Test a = Fun();       则经过编译器处理后伪代码大致如下:
赋值运算符的返回值问题
最近看到C++的运算符重载,赋值运算符如=,+=,-=,.....,为什么operator=(),operator+=()...的返回值必须是对象的引用,书上说是保证这样的表达式赋值a=b=c,我把返回值改为按值返回,代码也能通过啊。 今天在看剑指offer时突然被这个问题困惑,为此上网查查,特此记录一下。 话不多说,先贴上代码 CMystring& operator=(const
java有返回值的线程,可以获取线程里面的返回值
Java线程:新特征-有返回值的线程   在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。   现在Java终于有可返回值的任务(也可以叫做线程)了。   可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。   执行Callable任务后,可以获取一个Future的对象
线程等待与线程的返回值
此demo中,线程随机生成一个数,并将此随机数通过返回代码传递给主进程。主进程获取到该随机数后打印出来。 需要说明的是:线程的传入参数和返回值类型都是void*,所以可以通过强制类型转换传递任何类型。 #include #include void *fn(void *arg) { char num; srand(time(0)); num = rand()%100; sleep
有返回值的多线程示例
问题场景近期遇到用多线程优化程序,但是必须带有返回值,实现Runnable接口不可行,查看API,可以用Callable接口,试举一例。package thread;import java.util.ArrayList; import java.util.List; import java.util.concurrent.*;/** * Created by yangyouxing * date