这根本不是个值得讨论的话题,它太简单了,只要一个F1,msdn上会给你一个详细的讲解,虽然是英文的,但是很好理解。
int isopen;//判断文件是否打开
isopen=docFile.Open(strFileName,CFile::modeCreate|CFile::modeWrite);
if (isopen==0) {
MessageBox(filename+" 已经被打开","提示^_^",0+64);
return;
}
搞笑的是我发现Open(strFileName,CFile::modeCreate|CFile::modeWrite);这个函数在我的vc环境里是这样写的:virtual BOOL Open (LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL)
这不返回的是bool类型吗?
如是我一开始把isopen定义为bool类型的,使用过程中居然有警告,晕倒啊。
后来才明白函数定义人的用意: 0代表false 非零代表true,这个学过c++的人都知道,但是在写代码的时候,却不提倡这样写,例如:
bool isopen;
if(isopen==false)//写法是不提倡的
提倡的是if(isopen)或者if(!isopen),也绝不提倡if(isopen==1)这类的。
而打开文件这个方法,它的返回值是这样的,打不开的时候返回0,打开了返回一个非零的值,当然只有两种打开方式,ture与false即可区别,但是函数定义人却使用了数字形式,是不是典型的微软思想?
int isopen;//判断文件是否打开
isopen=docFile.Open(strFileName,CFile::modeCreate|CFile::modeWrite);
if (isopen==0) {
MessageBox(filename+" 已经被打开","提示^_^",0+64);
return;
}
搞笑的是我发现Open(strFileName,CFile::modeCreate|CFile::modeWrite);这个函数在我的vc环境里是这样写的:virtual BOOL Open (LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL)
这不返回的是bool类型吗?
如是我一开始把isopen定义为bool类型的,使用过程中居然有警告,晕倒啊。
后来才明白函数定义人的用意: 0代表false 非零代表true,这个学过c++的人都知道,但是在写代码的时候,却不提倡这样写,例如:
bool isopen;
if(isopen==false)//写法是不提倡的
提倡的是if(isopen)或者if(!isopen),也绝不提倡if(isopen==1)这类的。
而打开文件这个方法,它的返回值是这样的,打不开的时候返回0,打开了返回一个非零的值,当然只有两种打开方式,ture与false即可区别,但是函数定义人却使用了数字形式,是不是典型的微软思想?