int CSortListCtrl::AddItem( LPCTSTR pszText, ... )
{
const int iIndex = InsertItem( GetItemCount(), pszText ); LPTSTR* arrpsz = new LPTSTR[ m_iNumColumns ];
arrpsz[ 0 ] = new TCHAR[ lstrlen( pszText ) + 1 ];
(void)lstrcpy( arrpsz[ 0 ], pszText );  va_list list;
va_start( list, pszText ); for( int iColumn = 1; iColumn < m_iNumColumns; iColumn++ )
{
pszText = va_arg( list, LPCTSTR );
ASSERT_VALID_STRING( pszText );
VERIFY( CListCtrl::SetItem( iIndex, iColumn, LVIF_TEXT, pszText, 0, 0, 0, 0 ) ); arrpsz[ iColumn ] = new TCHAR[ lstrlen( pszText ) + 1 ];
(void)lstrcpy( arrpsz[ iColumn ], pszText );
} va_end( list ); VERIFY( SetTextArray( iIndex, arrpsz ) ); return iIndex;
}
、、、、、
我也见过Catch (...) 这种用法,有能解释一下的吗?

解决方案 »

  1.   

    参数个数可变,printf就是这个样的
    在psdk内搜搜这个va_start可以获得更多信息
      

  2.   

    是一个va_list,可变参数,msdn之~
      

  3.   

    不是VC的怪东西
    只是C而已
      

  4.   

    Catch (...)
    表示捕获所有异常。通常用在你不知道会发生什么异常的时候用。
      

  5.   

    catch(...)是极不负责任的做法,坚决拒绝
      

  6.   

    catch(...)是极不负责任的做法,坚决拒绝
    ---------------------------------------有时必需这样做, 为了回收局部资源, 如果处理不了这个异常就 再throw 出去正常的处理
      

  7.   

    还有rickerliang,虽然这样做不负责任,但是有时候不知道什么异常的时候就只能这样做,而且至少这样用不会出非操