windows.h的头文件重复问题,百思不的其解。
这是老师布置的写4个线程的题目,我用比较简单的方式写了,之后编译啊就出现
fatal error C1189: #error : WINDOWS.H already included. MFC apps must not
,上网看了文章,改了共享mfc dll,还是不行啊,求高手指点。
#include <iostream.h>
#include <windows.h>
#include <process.h>
#include <stdlib.h>
#include "stdafx.h"
static int i=0;
static double sum=0;
static int Num[1000];
unsigned _stdcall GenerareNum();
unsigned _stdcall SumNum(int Num[]);
void main()
{
unsigned gid[2],sid[2];
unsigned long _Generate[2];
unsigned long _Sum[2];
_Generate[0]=_beginthreadex(NULL,0,GerateNum,0,0,&gid);
_Generate[1]=_beginthreadex(NULL,0,GerateNum,0,CREATE_SUSPENED,&gid);
_SumNum[0]=_beginthreadex(NULL,0,SumNum,&Num,CREATE_SUSPENED,&sid);
_SumNum[1]=_beginthreadex(NULL,0,SumNum,&Num,CREATE_SUSPENED,&gid);
if(WaitForSingleObject(_Generate[0],0) == WAIT_OBJECT_0)
ResumeThread(_Generate[1]);
if(WaitForSingleObject(_Generate[1],0) == WAIT_OBJECT_0)
ResumeThread(_Sum[0]);
if(WaitForSingleObject(_Sum[0],0) == WAIT_OBJECT_0)
ResumeThread(_Sum[1]);
if(WaitForSingleObject(_Sum[1],0) == WAIT_OBJECT_0)
cout<<"这1000个数的和是"<<sum;
}
unsigned _stdcall GenerareNum()
{
for(int j=0;j<500;j++)
{
Num[i]=Rand();
i++
}
//return 1;
}
unsigned _stdcall SumNum(int Num[])
{
for(int k=0;k<500;k++)
{
sum=sum+Num[i];
i--;
}
//return 1;
}
[解决办法]
你这个是控制台程序?
那么就要设置为windows标准库。不能设置为mfc的库。
你这段代码中的出现的错漏,实在是不少,你应该好好的检查一下这段代码。
还有你似乎还不具备c++的基础编程能力,在这样情况下,就编写多线程,并不是明智之举。