宏定义后注意细节

原创 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,编译成功。



C++宏定义需要注意的细节

#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但如果我们不需要到一些细节,很容易因为这个简单的宏定义引发难以预料的问题 宏...
  • hsd2012
  • hsd2012
  • 2016-03-24 09:15:35
  • 1394

c语言中注意细节

c语言中易忘易忽略知识点 逻辑运算符 中存在着局部短路的现象 1.&&  1&&2 与运算表示的是同真则真 有一假则为假 如果1是假 则2不做判断 2.|| 或运算表示的是一真则真 同时为假才为假...
  • liululu2015
  • liululu2015
  • 2015-01-15 22:33:51
  • 522

软件开发中需要注意的细节

转载自点击打开链接 软件产品开发应该注意的细节 1.系统流程梳理 以一个很简单的例子来说明流程梳理对软件开发的意义,比如你要进行一次演讲,但是这次演讲是即兴的,你不是专业的即兴演讲家,那么在没有...
  • lyd135364
  • lyd135364
  • 2016-12-22 10:03:34
  • 853

开店需要注意的七大细节

现在,也许你正坐在你的小卧室里面,想着如何开始你自己的生意,做你自己的老板。任何一个有经验的企业家都会告诉你,这可不是一件容易的事。当你的公司进入实际筹备阶段时,有些事情是必须要做的,否则将来肯定会后...
  • ysee
  • ysee
  • 2007-07-13 14:51:00
  • 582

(改善代码)写代码时注意细节 1~10条

本文将持续更新,所得经验均在书籍记录,网上文章或是工作实践中所获。可以有效提高代码运行效率,减少代码冗余,改善代码可观性(他人查看代码)。1.在构造函数时有成员变量初始化,尽量采用初始化。class ...
  • xiaoxiao_manong
  • xiaoxiao_manong
  • 2018-02-28 16:29:54
  • 28

毕业生与用人单位签约时应注意的细节问题,这有详细说明

  • 2010年04月08日 22:14
  • 122KB
  • 下载

java编码小细节注意

一、避免多个返回(退出点) 依照你的方法,确保只有一个退出点。不要在同一个地方或多个地方使用返回。比如,下面的代码,NOT RECOMMENDED(不建议),这是因为有多个退出点(返回语句)。 ...
  • lizhi_java
  • lizhi_java
  • 2014-12-01 17:05:51
  • 501

java编写代码需要注意的小细节

最近在公司负责sonar问题解决的工作,初步得到了以下心得: 1、在正常的处理过程中要慎用e.printStacktTace();尽量自己写异常的打印或者记录工作,因为e.printStacktTac...
  • henuhaigang
  • henuhaigang
  • 2015-09-22 23:57:39
  • 552

宏定义注意事项

3.1.3注释优先与预处理展看 #define BSC// BSC tesg 3.14 用define宏定义表达式 #define SEC_A_YEAR (60*60*24*365)UL ...
  • parasoft
  • parasoft
  • 2014-04-29 17:31:54
  • 1326
收藏助手
不良信息举报
您举报文章:宏定义后注意细节
举报原因:
原因补充:

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