我目前正在爲微控制器編寫代碼;由於ATMega128沒有硬件乘法器或分頻器,因此這些操作必須用軟件完成,並且佔用相當數量的週期。但是,爲了代碼的可移植性和易用性,我不希望將預先計算的值硬編碼到我的代碼中。因此,例如,我有許多依賴於系統時鐘頻率的任務。目前我運行在16MHz,但是我應該選擇降低它,比如說爲了降低電池應用的功耗,我想改變一行代碼而不是很多。那麼,C預處理器可以計算算術表達式,然後將結果「粘貼」到我的代碼中,而不是將原始表達式「粘貼」到代碼中?如果是這樣,我將如何去做這件事?他們的編譯器選項和我需要考慮的是什麼?C預處理器可以執行算術運算嗎?如果是這樣,怎麼樣?
注:我想要計算的值是常數值,所以我沒有理由認爲這不是一個功能。
如果表達式是常量,它們是不是被編譯器優化掉了呢? –
http://stackoverflow.com/a/1560385/995714 –
的副本嗯,有預處理器庫,可能有一個給你,它主要取決於你定位的C語言版本,例如C99和上面有P99 http://p99.gforge.inria.fr/ – user2485710