长期用户,这里是第一次海报。我找了一个类似的问题,但一直无法找到任何东西。如果我在#define中使用固定公式,是否比使用数字效率低?
我正在通过KeilμVision上C语言编写的一些Cortex-M3工作代码工作。
在记录ADC值的函数中,使用比例因子将位从位转换回电压。
我的问题是围绕缩放因子,这是在头文件中定义:
#define INPUT_VALUE_MAX (uint16_t)((1<<12)-1)
因此,这等于4095,这是有道理的,因为它是一个12位ADC。我的问题是,将公式“INPUT_VALUE_MAX”的值定义为公式意味着每次使用它时,微控制器都必须重新计算该值。
简单,做:
#define INPUT_VALUE_MAX (uint16_t)((1<<12)-1)
会比更多的处理时间:
#define INPUT_VALUE_MAX (uint16_t)4095
?
在此先感谢任何人可以提供的帮助!
根据使用的编译器,它重写第一个像优化的第二个,所以我认为它是相同的。 –
(几乎?)所有的编译器都会在编译时评估常量,并在代码中粘贴'4095'。 – TripeHound
太棒了!谢谢你的迅速和有益的回应! –