長期用戶,這裏是第一次海報。我找了一個類似的問題,但一直無法找到任何東西。如果我在#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
太棒了!謝謝你的迅速和有益的迴應! –