分享心得
在开发的过程中的问题记录(会不断的增加,把我犯的一些错误,和一些心得与大家分享)
1. 在编译程序中老出现“fatal error C1010: unexpected end of file while looking for precompiled header directive”
原因是:添加了一个新的.cpp文件,却没再最顶端包含#include<stdafx>,加上,便可解决这个问题,如果是在不想加这东西,可以在project->setting->c++ 的categray =precomplied Header 选择Not using……
2.线程函数作为类成员函数时: 编译提示error C2664: '_beginthreadex' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned int (__stdcall *)(void *)'
解决方法:该线程函数作为类成员函数时一般加上static 修饰符。
3.某个应用程序只允许执行1次,即只产生一个窗口(这里以MFC程序为例)
// 创建互斥量
HANDLE m_hMutex = CreateMutex(NULL, FALSE, "Sample07");
// 检查错误代码
if (GetLastError() == ERROR_ALREADY_EXISTS) {
// 如果已有互斥量存在则释放句柄并复位互斥量
CloseHandle(m_hMutex);
m_hMutex = NULL;
// 程序退出
return FALSE;
}
*将这段代码放进对应app类的InitInstance()成员函数定义中
4 不要用函数的指针参数来开辟动态内存,如果一定要用,请用2重指针,因为函数中参数传递的过程设计到一个副本的建立,在函数结束后,该副本资源会被释放。导致指针并不能如我们所愿的指向包含我们需要数据的地址
5 非法指针的问题:delete仅仅是将指针指向的内存释放掉,但是指针并不为NULL,所以要释放内存后最后将指针赋值为NULL,这是个比较好的习惯。
6 工程中连接.lib文件的语句
#program comment(lib,"名字");
7在工程中指定头文件等目录的方法:Project->setting
选择C/C++选项->Category:下选择Preprocessor
然后在下面的Additional include directories:下加上你的目录就行了
未完待续…………
[[i] 本帖最后由 gwq85387566 于 2007-10-12 14:06 编辑 [/i]] |