VS2010 C++窗体应用程序 多线程问题

stdafx.h:#pragmaonce//TODO:在此处引用程序需要的其他头文件#include"class1.h"#include<process.h>#inclu... stdafx.h:
#pragma once

// TODO: 在此处引用程序需要的其他头文件
#include "class1.h"
#include <process.h>
#include <stdlib.h>
#include <windows.h>
-------------------------------------------------------------------------------
class1.h:
#pragma once

typedef int semaphore;
/* 其他用到的变量的定义 */

HANDLE mutex;//对缓冲区互斥的锁

unsigned create_pthread_producer();//添加生产者线程
-------------------------------------------------------------------------------
class1.cpp
#include "StdAfx.h"
#include "class1.h"

void create_pthread_producer()//添加生产者线程
{
HANDLE phThreads;
phThreads = CreateThread( NULL, 0, producer, NULL, 0, NULL);
}

DWORD WINAPI producer(LPVOID lpParameter)//生产者函数
{
//生产东西到缓冲区中
do{
buffer[in] = (rand() % 98) + 1;//1-99随机数
in = (in + PRODUCER_TIME) % 20;
}while(1);
}
-------------------------------------------------------------------------------
出现错误:
error C2146: 语法错误: 缺少“;”(在标识符“mutex”的前面)

困扰一天了,求大神帮帮忙,_(:зゝ∠)_
win窗体点击按钮事件执行create_pthread_producer()
mutex是想在producer中使用的,但是定义都报错
展开
 我来答
匿名用户
2016-06-30
展开全部
一般这种问题,是因为你没有包含定义HANDLE的头文件。但是看你包含了windows.h是不会出现这问题的,不过还是建议你在class1.h里面包含windows.h试试。
追问
我在class1.h里加了windows.h后,这个问题是没了,但是出现了新的问题:
...
1>stdafx.obj : error LNK2005: "int out" (?out@@3HA) 已经在 class1.obj 中定义 class1.obj
...(同样的其他错误提示)

说我变量重定义了?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式