- 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的预处理在乘和加的优先级上,优先计算了加!
多加个括号就可以了。要注意啊!
这个算是bug吗 如果不是为什么要这么处理呢?
强大!
AR宏中的一个陷井,很要注意