多线程中 如何把int 变量 转成 const int变量

tubo_true 2008-07-29 11:20:19

dowork函数里 有个参数threadNums
想把 threadNums 副值给 nums
但是编译报错
error C2057: 应输入常数表达式
error C2466: 不能分配常数大小为 0 的数组
error C2133: “aa” : 未知的大小

const int ii=threadNums;
CWinThread* aa[(ii)]; //编译报错

//以下代码没有问题
const int nums=3; //必须 手写 3 想让 nums=threadNums 传进来的参数
CWinThread* m_pthread[nums]; //编译成功
threadInfo info[nums];


for (int g=0;g<m_Array.GetSize();)
{
//准备线程
for (int j=0;j<nums;j++,g++)
{

m_pthread[j] = AfxBeginThread((AFX_THREADPROC)ThreadFtpDown, (LPVOID)&info[j],THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL);

}

//开始线程
for (int j=0;j<nums;j++)
{
if (m_pthread[j])
{
m_pthread[j]->ResumeThread();
::WaitForSingleObject(m_pthread[j]->m_hThread,INFINITE);
}
}


}

请问 如何把传进来的参数转成const int 变量
请各位高手指点一下
...全文
174 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lymastee 2008-10-02
  • 打赏
  • 举报
回复
帮顶~~
cornmoon_blue 2008-10-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 songhtao 的回复:]
常量必须在声明时初始化,也就是声明后固定不变,不能用变量给他赋值
[/Quote]
说得对。
const变量的值在初始化后就不能改变了。
建议搂住看看intel的例子程序,关于初始化线程可以直接套用。
  • 打赏
  • 举报
回复
静态分配内存必须是固定
例如:
int b=3;
比方说 int a[b];
就算如此也会报错。
但是你可以用动态分配内存的方法 比如 int* a=new int[b];
这样就OK了
laxila 2008-09-30
  • 打赏
  • 举报
回复
顶一下,谢谢楼主了
treetor 2008-09-30
  • 打赏
  • 举报
回复
不得不顶。。。支持
majiajun_no_5 2008-09-30
  • 打赏
  • 举报
回复
获益匪浅
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tubo_true 的回复:]
vector就能解决动态,但是

WaitForMutiObject函数,第二个参数,要传入线程句柄数组

怎么传啊
[/Quote]
一样用vector
vector<HANDLE> h(size);

WaitForMutiObject( , &h[0],size , );
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tubo_true 的回复:]
vector就能解决动态,但是

WaitForMutiObject函数,第二个参数,要传入线程句柄数组

怎么传啊
[/Quote]
一样用vector

vecotr<HANDLE> h(size);
WaitForMutiObject( .. , &h[0], size , ... );
lehedele 2008-09-28
  • 打赏
  • 举报
回复
顶啊
tubo_true 2008-07-31
  • 打赏
  • 举报
回复
handle[]不也是动态的吗?
handle[nums]定义时,也要const int 类型
举个代码例子
whycom 2008-07-30
  • 打赏
  • 举报
回复
int ii=threadNums;
CWinThread** aa =new CWinThread*[ii];
tubo_true 2008-07-30
  • 打赏
  • 举报
回复
是不是根本就转换不了
微澜- 2008-07-30
  • 打赏
  • 举报
回复
把数组指针放入handle[],然后把handle传递进去就行了
tubo_true 2008-07-30
  • 打赏
  • 举报
回复
vector就能解决动态,但是

WaitForMutiObject函数,第二个参数,要传入线程句柄数组

怎么传啊
我不懂电脑 2008-07-29
  • 打赏
  • 举报
回复
常量必须在声明时初始化,也就是声明后固定不变,不能用变量给他赋值

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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