首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C/C++利用位演算来进行函数参数检查

2013-10-19 
C/C++利用位运算来进行函数参数检查经常我们写一个函数时,假如它有多个参数,我们在函数入口处,对这多个参

C/C++利用位运算来进行函数参数检查

     经常我们写一个函数时,假如它有多个参数,我们在函数入口处,对这多个参数的有效性进行检查,经常使用的写法会像下面一样

#include "stdafx.h"#include <iostream>#define ARGCHECK(CONDITION, FLAG)    ((FLAG <<= 1) && (CONDITION))void testFunction(int *pTest, int test, bool isTest){    int flag = 1;    if(ARGCHECK(pTest == NULL, flag)         || ARGCHECK(test < 0, flag)         || ARGCHECK(isTest == false, flag)){        printf("Invalid argument is %0x\n", flag);        return;    }    return;}int _tmain(int argc, _TCHAR* argv[]){    testFunction(NULL, -10, true);    return 0;}
    通过上面的写法可以很容易找到第一个无效的参数,例如我这打印出的flag为2,换算成2进制为0010(由于flag初始化为1,所以看2进制结果时应该从次低位开始),所以这很容易看出是第一个参数出了问题,然后开始调试。


热点排行