对函数传入的参数进行检查:1 既能提高程序的效率;2 也能使程序变得更健壮,防止程序运行时崩溃
可从以下方面入手:
1 传入指针,需检查指针是否有效。
- void f(char *p)
- {
- if(NULL == p)
- {
- //处理
- }
- }
2 传入的是数组下标,对下标范围检查。
- int operator [](int c_iIndex)
- {
- if(c_iIndex<min || c_iIndex >max)
- {
- //处理
- }
- }
当然,还有其他很多情况,对函数传入的参数进行检查是一种很好的编程习惯。
如果传入的参数不合法,解决方法:
为了照顾Debug和Release,可如下做
- int operator [](int c_iIndex)
- {
- if(c_iIndex<min || c_iIndex >max)
- {
- assert(false);
- return -1;//(可能是其他数)
- }
- }
今天写了个程序,先创建一个窗口:
- HWND hWnd = CreateWindow(
- g_AppName,
- TEXT("D3D Tutorial 1"),
- WS_OVERLAPPEDWINDOW,
- 100,
- 100,
- 300,
- 300,
- NULL,
- NULL,
- wc.hInstance,
- NULL
- );
然后创建一个3D设备
- if(FAILED(g_pD3DObj->CreateDevice(
- D3DADAPTER_DEFAULT,
- D3DDEVTYPE_HAL,
- hWnd,
- D3DCREATE_SOFTWARE_VERTEXPROCESSING,
- &d3dpp,
- &g_pD3DDev
- )))
- {
- return E_FAIL;
- }
结果这个函数总是返回错误,找了很久,原来是创建窗口时没有成功,也就是hWnd为NULL,而我在创建窗口时没有检查是否创建成功。。。。。。。。。。。。。。。。。。。。