• 16
  • 12月

版本是IAR720H
使用了下面一断程序

#define YEAR_DAYS       365<br />
#define FOURYEAR_DAYS   (YEAR_DAYS * 4 + 1)


猜猜FOURYEAR_DAYS值是多少?

按照Hanny最初的想法,结果应该是365 * 4 + 1 = 1461。

结果实际预处理的结果却是365 * (4 + 1) = 1825。

Hanny怀疑是宏嵌套的问题,于是又实验了

#define FOURYEAR_DAYS   (365 * 4 + 1)

结果,还是1825。

看来,IAR的预处理在乘和加的优先级上,优先计算了加!

多加个括号就可以了。要注意啊!

» Tags:IAR

» 这篇文章共有3条评论,你可以在文章底部留下你的评论

  1. uurun Says:
    2011-12-22 12:58

    这个算是bug吗 如果不是为什么要这么处理呢?

  2. Kristen Says:
    2011-12-29 01:50

    强大!

  3. 2013-03-15 15:48

    AR宏中的一个陷井,很要注意

发表评论