1. if 判断的条件语句的书写:
if ( flag = TRUE )
{...
}
一个判断语句犯了三个致命错误:判断语句中判别式用"=="而不是"="; 判别语句顺序反了,应该把判定变量放在判定语句后面;判定语句中就不能把布尔变量与TRUE/FALSE判别!所以,正确写法是:
if ( flag )
{...
}
2. 资源ID定义:
resource.h文件中定义了各种资源的ID号, 例如: 菜单,工具栏,对话框等. 当对话框等资源被删除了,resource.h文件中定义的资源ID号并不会被VC自动删除,需要程序员手动完成这项工作;
在不同对话框中, 可以有相同的资源ID.例如, DIALOG_APP1和DIALOG_APP2都有一个BUTTON控件, 都可以定义为BTN_OPEN_FILE,这并不会影响程序的正常运行; 但必须保证在同一个对话框中不能发生ID定义冲突, 否则程序运行时可能发生错误的消息相应.例如, 在对话框DIALOG_APP1中两个BUTTON都定义为BTN_CLICK, 但你希望第一个相应消息函数BtnOpenFile(), 第二个相应消息函数BtnSaveFile(), 但不幸的是,程序会调用BtnSaveFile().
3. 不应默认if 判断条件语句的执行顺序是固定的由前到后或由后到前:
例如:
CSomeClass* pV;
//......为pV指针赋值
if ( NULL!=pV && pv->GetCount()>0 ) {...}//程序运行期间可能会出错
很多人会问,我已经先判断指针不为空才执行pV->GetCount()函数,所以不会有错. 可是, 在程序运行时, 不一定先执行NULL!=pV .所以应该修改为:
if ( NULL!=pV ){
if ( && pv->GetCount()>0 ) {...}
}
4. 在变量定义的同时,必须为变量赋值:
很多程序员在函数体中不为临时变量赋初始值,可在后续的语句中又对变量的值进行使用而造成预料不到的后果。例如: int i;
if (条件1){ i=0;}
if (条件3){i=1;}
if (0==i){...}
else {...}//本以为i为3才执行此段代码,可事实上i=4时也执行此段代码。