初学多线程编程 遇到AfxBeginThread()函数问题!

wangyangyangcumt 2008-10-12 01:34:46
void main()
{
CWinThread* AfxBeginThread
(function1()//自定义的函数
NULL,
THREAD_PRIORITY_NORMAL,
UINT nStackSize=0,
DWORD dwCreateFlags=0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL
);//用于创建工作者线程
}
UINT function1()
{
while(true)
{
printf("I love you!");
Sleep(1000);
printf("\t");
return 0;
}
}
------------------------
错误是:identifier 'function1'
请高手帮忙!AfxBeginThread()看着不难,怎么那么难用啊!
...全文
157 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyangyangcumt 2008-10-12
  • 打赏
  • 举报
回复
按照各位的意思,
改成了:
#include <stdio.h>
#include <afxwin.h>
UINT function()
{
while(true)
{
printf("I love you!");
Sleep(1000);
printf("\t");
return 0;
}
}
void main()
{
int value;
scanf("%d",&value);
if(value==0)
{
printf("您输入的是%d\n",value);
CWinThread* pThread=AfxBeginThread
(function(),
NULL,
THREAD_PRIORITY_NORMAL,
0,
0,
NULL
);//用于创建工作者线程
}
else
{
printf("没有被调用!\n");

}
}

又有新的错误,none of the 2 overloads can convert parameter 1 from type 'unsigned int'
哪大哥能帮小弟调试好!
都哭了!
laomig 2008-10-12
  • 打赏
  • 举报
回复
CWinThread* AfxBeginThread
(function1(),
LPVOID a=NULL,
THREAD_PRIORITY_NORMAL,
UINT nStackSize=0,
DWORD dwCreateFlags=0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL
);//用于创建工作者线程
你这个启动工人线程的函数是不是应该返回值才对!改为
CWinThread* pThread=AfxBeginThread
(function1(),
LPVOID a=NULL,
THREAD_PRIORITY_NORMAL,
UINT nStackSize=0,
DWORD dwCreateFlags=0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL
);//用于创建工作者线程
另外function1改为
UINT function1(LPVOID pParam)才对;
这个程序问题太多,你程序无法正常退出,建议你还是把基础打好。
wangyangyangcumt 2008-10-12
  • 打赏
  • 举报
回复
我是把function1()定义在void前面了。
我的源程序是:
#include <stdio.h>
#include <afxwin.h>
UINT function()
{
while(true)
{
printf("I love you!");
Sleep(1000);
printf("\t");
return 0;
}
}
void main()
{ int value;
scanf("%d",&value);
if(value==0)
{
printf("您输入的是%d\n",value);
CWinThread* AfxBeginThread
(function(),
LPVOID a=NULL,
THREAD_PRIORITY_NORMAL,
UINT nStackSize=0,
DWORD dwCreateFlags=0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL
);//用于创建工作者线程
}
else
{
printf("没有被调用!\n");

}

}
它提示错误!
identifier 'function'
weidong0210 2008-10-12
  • 打赏
  • 举报
回复
恩 不少语法错误
while(true) 就不退出了
函数命名一开始就要养成好习惯
cnzdgs 2008-10-12
  • 打赏
  • 举报
回复
这样写:
UINT function1(LPVOID pParam)
{
printf("I love you!");
Sleep(1000);
printf("\t");
return 0;
}

void main()
{
AfxBeginThread(function1, 0, THREAD_PRIORITY_NORMAL, 0, 0, NULL);
getch();
}

不过你现在对于C/C++的语法还不熟,还是先练习一些简单的程序吧。
wangyangyangcumt 2008-10-12
  • 打赏
  • 举报
回复
我是把function1()定义在void前面了。
我的源程序是:
#include<stdio.h>
#include <afxwin.h>
UINT function()
{
while(true)
{
printf("I love you!");
Sleep(1000);
printf("\t");
return 0;
}
}
void main()
{ int value;
scanf("%d",&value);
if(value==0)
{
printf("您输入的是%d\n",value);
CWinThread* AfxBeginThread
(function1(),
LPVOID a=NULL,
THREAD_PRIORITY_NORMAL,
UINT nStackSize=0,
DWORD dwCreateFlags=0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL
);//用于创建工作者线程
}
else
{
printf("没有被调用!\n");

}

}
「已注销」 2008-10-12
  • 打赏
  • 举报
回复
你把UINT function1()写到mian()上面就不用声明了
回去翻翻c语言书吧,这不是线程的问题,是语法问题,先把基础打好再说
看看你写的函数,while能循环么?还有那函数命名,哎呀
贵子潘 2008-10-12
  • 打赏
  • 举报
回复
这样呢?
UINT function1();

void main()
{
CWinThread* AfxBeginThread
(function1//自定义的函数
NULL,
THREAD_PRIORITY_NORMAL,
UINT nStackSize=0,
DWORD dwCreateFlags=0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL
);//用于创建工作者线程
}
UINT function1()
{
while(true)
{
printf("I love you!");
Sleep(1000);
printf("\t");
return 0;
}
}
LWYY52243548 2008-10-12
  • 打赏
  • 举报
回复
没帮你调试,不过看你的错误提示就知道了.不是AfxBeginThread()的错误.
你的function1()函数没先经过声明就用.如果你不想先声明,应该把函数放置在main()函数的前面.

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧