程序有点乱...我只贴出来与之相关的一部分好了...不知道这样可不可以看...
这个是主函数的相关部分
int main(int argc, char *argv[])
{
uint8_t conNum=6;
mac_DL_MAP_IE dlmapie[MAX_USER_NUM];
con_res_info pDlCon[]={{1,5,2,20,1,0},{2,2,3,30,5,0},{3,1,4,40,3,0},{4,1,1,20,2,0},{5,3,3,30,3,0},{6,4,2,40,5,0}};
BS_DL_Traffic_Scheduling(pDlCon,conNum,dlmapie);
printf("%d %d %d %d %d %d",pDlCon[0].cid,pDlCon[1].cid,pDlCon[2].cid,pDlCon[3].cid,pDlCon[4].cid,pDlCon[5].cid);//以上为对mac 测试
system("PAUSE");
return 0;
}
这个是子函数相关部分:
uint8_t BS_DL_Traffic_Scheduling(con_res_info *pDlCon, uint8_t conNum, mac_DL_MAP_IE *pDlMapIe)
{
con_res_info temp;
con_res_info*i;
con_res_info*j;
for(j=pDlCon+conNum-1;j>pDlCon;j--)
for(i=pDlCon;i<j;i++)
{
if((*i).qos>(*(1+i)).qos)
{
temp=*i;
*i=*(i+1);
*(i+1)=temp;
}
else if((*i).qos==(*(i+1)).qos&&(*i).len<(*(i+1)).len)
{
temp=*i;
*i=*(i+1);
*(i+1)=temp;
}
}//将业务按优先级和等待队列长度排队
}
输出为4 1 2 5 6 3 按任意键继续...
后来我在子函数里加了个这个东东:
for(i=pDlCon;i<pDlCon+conNum;i++,k++)
{
if((*i).mcs==0)
{
cod=0.5;
mod=2;
}
else if((*i).mcs==2)
{
cod=0.75;
mod=2;
}
else if ((*i).mcs==3)
{
cod=0.5;
mod=4;
}
else if ((*i).mcs==5)
{
cod=0.75;
mod=4;
}
else
{
cod=0.5;
mod=2;
}
程序就什么都输出不了了...不知道我说明白了吗...
[[it] 本帖最后由 tadpole 于 2008-4-18 11:16 编辑 [/it]]