2 ewenyee Ewenyee 于 2016.04.10 22:44 提问

块语句里定义的问题,error C2360l错误

void CDBDlg::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{

LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR;
CString str;
switch(lplvcd->nmcd.dwDrawStage)
{

        int iRow;  
        case CDDS_PREPAINT:
        *pResult = CDRF_NOTIFYITEMDRAW;
        break;
    case CDDS_ITEMPREPAINT:
        *pResult = CDRF_DODEFAULT;
        iRow= lplvcd->nmcd.dwItemSpec;
        str=m_Grid.GetItemText( iRow, 0 );
        if(str=="TT")
        {
           // lplvcd->clrTextBk = RGB(255, 255, 255);
            lplvcd->clrText = RGB(255, 0, 0);
            *pResult = CDRF_NEWFONT;
        }
        break;
    default:
        *pResult = CDRF_DODEFAULT;
}

}

以上代码是没有问题的,但是我把CString str;这个定义放在switch语句大括号里面就会报error C2360: initialization of 'str' is skipped by 'case' label错误,但是为什么int iRow在switch大括号定义里却不会被块语句封杀?

2个回答

caozhy
caozhy   Ds   Rxr 2016.04.10 22:50

CString str;
->
CString str="";

Ewenyee
Ewenyee CString str="";放在大括号里照样报错,但是为什么int型的iRow就不会报错呢?
一年多之前 回复
Ewenyee
Ewenyee   2016.04.10 22:59

大侠,能说的更详细一点吗?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!