明日茶座 |
 |
|
|
|
|
|
视频中心 |
 |
|
|
|
|
|
经验技巧 |
 |
|
|
|
|
|
|
|
|
技巧名称: |
由于注释导致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 = “伟大的祖国 \
,我爱你”;
原来在编写注释的时候,“\”也表示注释的换行。
|
|
|