宏定义后注意细节

宏定义的优点不说了,比如:#defineCC_DISCRETE_BOOST   "DAB" 则以下你用CC_DISCRETE_BOOST就可以代表 “DAB”,但是会出现下面的问题:

如程序需要输入参数,我的输入参数为: -bt  CC_DISCRETE_BOOST

部分关键代码如下:

if( !prmName.compare("-bt" ) )
    {
        boost_type = !val.compare(CC_DISCRETE_BOOST ) ? CvBoost::DISCRETE :
                     !val.compare( CC_REAL_BOOST) ? CvBoost::REAL :
                     !val.compare(CC_LOGIT_BOOST ) ? CvBoost::LOGIT :
                     !val.compare(CC_GENTLE_BOOST ) ? CvBoost::GENTLE : -1;
        if (boost_type == -1)
            res = false;
    }


(部分代码省略)

String boostTypeStr =boost_type == CvBoost::DISCRETE ? CC_DISCRETE_BOOST :
                          boost_type ==CvBoost::REAL ? CC_REAL_BOOST :
                          boost_type ==CvBoost::LOGIT  ? CC_LOGIT_BOOST :
                          boost_type == CvBoost::GENTLE ?CC_GENTLE_BOOST : String();
CV_Assert(!boostTypeStr.empty() );   //CV_Assert()若括号中的表达式值为false,则返回一个错误信息

但是编译错误如下图:


意思就是boostType是空的。。想了半天怀疑是选择运算符结合问题我理解错了,,,后来发现不是。。又过了一阵才反应过来,我输入参数的问题,虽然程序中定义了

#defineCC_DISCRETE_BOOST   "DAB",但是我输入的东西应该是变量实际的值即“DAB”,而不是CC_DISCRETE_BOOST  ,修改后输入参数为-bt DAB,编译成功。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值