检查传入参数

 对函数传入的参数进行检查:1 既能提高程序的效率;2 也能使程序变得更健壮,防止程序运行时崩溃

可从以下方面入手:

1 传入指针,需检查指针是否有效。

  1. void f(char *p)
  2. {
  3.     if(NULL == p)
  4.     {
  5.         //处理
  6.     }
  7. }

2 传入的是数组下标,对下标范围检查。

  1. int operator [](int c_iIndex)
  2. {
  3.     if(c_iIndex<min || c_iIndex >max)
  4.     {
  5.         //处理
  6.     }
  7. }

当然,还有其他很多情况,对函数传入的参数进行检查是一种很好的编程习惯。

 

如果传入的参数不合法,解决方法:

为了照顾Debug和Release,可如下做

  1. int operator [](int c_iIndex)
  2. {
  3.     if(c_iIndex<min || c_iIndex >max)
  4.     {
  5.         assert(false);
  6.         return -1;//(可能是其他数)
  7.     }
  8. }

今天写了个程序,先创建一个窗口:

  1.     HWND hWnd = CreateWindow(
  2.                              g_AppName, 
  3.                              TEXT("D3D Tutorial 1"), 
  4.                              WS_OVERLAPPEDWINDOW, 
  5.                              100, 
  6.                              100, 
  7.                              300, 
  8.                              300,
  9.                              NULL, 
  10.                              NULL, 
  11.                              wc.hInstance, 
  12.                              NULL 
  13.                              );

然后创建一个3D设备

  1.     if(FAILED(g_pD3DObj->CreateDevice(
  2.                                       D3DADAPTER_DEFAULT,
  3.                                       D3DDEVTYPE_HAL,
  4.                                       hWnd,
  5.                                       D3DCREATE_SOFTWARE_VERTEXPROCESSING,
  6.                                       &d3dpp,
  7.                                       &g_pD3DDev
  8.                                       )))
  9.     {
  10.         return E_FAIL;
  11.     }

 

结果这个函数总是返回错误,找了很久,原来是创建窗口时没有成功,也就是hWnd为NULL,而我在创建窗口时没有检查是否创建成功。。。。。。。。。。。。。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值