都是一些最基本的问题,但是代码量大了以后,就容易忽略:
1,使用了c语言中的malloc,最后释放指针使用了自定义的SAFE_DELETE_PTR宏。
#define SAFE_DELETE_PTR(P) { if(p) { delete p; p = 0; } }
2,浮点数的比较问题。
为了提高运算速度,将float转化为大整数参与运算,然后再转化成浮点数,损失了精度。当前后两种float比较,用==就会始终失败。
3,win7跟xp的差异
我的系统是win7的,开发了一个小软件,当拿到xp下面的时候,运行就会出错。调试了一下,原因是:
在OnFileOpen函数中,获得文件目录的函数不同:
在xp中, m_filename= dlg.GetFileName(); 此时m_filename中存的就是文件的目录 + 文件名。
在win7下:
CString pathName = dlg.GetFolderPath();
pathName = pathName + CString("//");
m_filename= pathName + dlg.GetFileName();
Add By RYF - 2011/3/30
4,搞笑的自以为是:
5,函数指针:
typedef void pRetFunc(int);
pRetFunc* (*signal)(int,float*);
//二者等价
void (*signal_(int,float*) ) (int);
上面的代码试图实现:mode = 1,2,3,4的分支操作,mode代表象限ID。结果怎么不对,恍然大悟:mode==3的时候mode&1操作为true,执行分支1。。。