VARIANT_BOOL与BOOL

来源:互联网 发布:电信网络诈骗犯罪量刑 编辑:程序博客网 时间:2024/06/01 08:01

现有一函数

int   fun(VARIANT_BOOL bFlag)

当bFlag为true时返回0;

如下调用  int iRetVal = fun(TRUE);

或者     int iRetVal = fun(1);都不能返回0;

但是在js中这样调用 var va = "1";

 fun(va)则可以返回0


当时没仔细看参数类型,很是纳闷,同样一个函数,同样的参数,会有不同的结果。

通过跟踪最后发现

typedef short VARIANT_BOOL;

#define VARIANT_TRUE ((VARIANT_BOOL)-1)
#define VARIANT_FALSE ((VARIANT_BOOL)0)

typedef int                 BOOL;

#ifndef FALSE
#define FALSE               0
#endif


#ifndef TRUE
#define TRUE                1
#endif

以后调用函数需要细心啊

把BOOL类型的bFlag转化为VARIANT_BOOL

VARIANT_BOOL  vbFlag   =   bFlag?VARIANT_TRUE;VARIANT_FALSE;