宏定义后注意细节

原创 2013年12月02日 14:03:06

宏定义的优点不说了,比如:#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,编译成功。



相关文章推荐

opencv训练级联分类器

转自:http://blog.csdn.net/wuxiaoyao12/article/details/39227189 好久没有来写blog了,学生生涯终结,就不好好总结了,今天把OpenCV...

程序猿之---C语言细节31(#define和#undef宏细节、#error、#pragma message("文本信息")、宏定义注释)

#define和#undef宏细节、#error、#pragma message("文本信息")、宏定义注释

C/C++宏定义注意事项

三种预处理功能  C++提供的编译预处理功能主要有以下三种:   (一) 宏定义   (二) 文件包含   (三) 条件编译   在C++中,我们一般用const定义符号常量。很显然,用con...

C/C++常用宏定义,注意事项,宏中#和##的用法

总结下宏和函数的不同之处,以供大家写代码时使用,这段总结摘自《C和指针》一书。 当然宏定义非常重要的,它可以帮助我们防止出错,提高代码的可移植性和可读性等。 下面列举一些成熟软...

C/C++常用宏定义,注意事项,宏中#和##的用法

总结下宏和函数的不同之处,以供大家写代码时使用,这段总结摘自《C和指针》一书。 当然宏定义非常重要的,它可以帮助我们防止出错,提高代码的可移植性和可读性等。 下面列举一些成熟软...

关于宏定义的一些使用方法和注意点总结

我在写代码的时候喜欢使用宏,不仅使代码看起来整洁,而且用好了还能极大的减轻编码的工作量,但是如果 使用不当的话,出了问题查找起来就就非常的难了,下面的总结大部分是从网上看到的,也有一些是我自己在工作中...

宏定义,记得要注意加括号的地方

宏定义:注意x,y值都有一个括号,和特定的符号时 需要加上括号! // SWAP(x, y)               交换x,y的值   #define SWAP(x, y) \      ...

宏定义需要注意的地方

#define MAX(a,b) ((a)>(b)?(a):(b)) 使用宏代码最大的缺点是容易出错,预处理器在复制宏代码时常常产生意想不到的边际效应。例如  #define MAX(a, b...
  • dscyw
  • dscyw
  • 2013年11月14日 20:16
  • 746

【JavaScript】(4)普通函数、动态函数定义格式,调用方式,注意的详细细节

Android自定义属性需要注意的细节

文章已经迁移到简书, 请移步简书进行查看关于Android自定义属性你可能不知道的细节 关于Android自定义属性网上已经有很多大神都已经详细的讲解过了. 关于如何使用自定义属性大家可以参考 ...
  • sadfgas
  • sadfgas
  • 2016年04月05日 10:55
  • 2243
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:宏定义后注意细节
举报原因:
原因补充:

(最多只允许输入30个字)