明日茶座 |
 |
|
|
|
|
|
視頻中心 |
 |
|
|
|
|
|
經驗技巧 |
 |
|
|
|
|
|
|
|
|
技巧名稱: |
由于注釋導致if語句失效 |
添加時間: |
2010-07-05 |
作者: |
劉銳寧 |
技巧類別: |
VC |
由于注釋導致if語句失效
大家分析一下下面的代碼執行情況,
//去除路徑
LPCTSTR CTestStrDlg::ExtractPath(LPCTSTR strPath)
{
CString csPath = "";
int nPos;
csPath = strPath;
//除去結尾的\
if ( csPath.Right( 1 ) == '\\' )
{
MessageBox(csPath.Right( 1 ));
csPath.SetAt( csPath.GetLength() - 1, '\0' );
}
nPos = csPath.ReverseFind( '\\' );
if ( nPos != -1 )
csPath = csPath.Mid( nPos + 1,csPath.GetLength() );
return (LPCTSTR)csPath;
}
void CTestStrDlg::OnOK()
{
ExtractPath("c:\\backup");
}
函數ExtractPath的作用是去除路徑,當調用該函數時,如果字符串結尾為“\”將彈出一個對話框,上述代碼傳遞的參數為“c:\\backup”,但是仍然彈出一個對話框。另筆者百思不得其解,經過1個多小時的調試,發現原來是注釋的原因,大家觀察一下“//除去結尾的\”注釋,由于注釋中有了“\”導致了if語句被過濾掉,在Visual C++代碼編輯器中,“\”表示換行,多用于較長的字符串中,例如:
Cstring str = “偉大的祖國 \
,我愛你”;
原來在編寫注釋的時候,“\”也表示注釋的換行。
|
|
|