1. 程式人生 > >Keil中C/C++優化等級選幾?

Keil中C/C++優化等級選幾?

拿到別人的一份程式碼,他選的是Level 3,如果選成 Level 0,連結會出錯。
這意味著什麼?

如果需要優化後代碼才能執行,那是不是意味著,程式碼設計有問題(RAM的使用)?

(1)3是最高優化,省了很多空間,0是不優化,很多多餘的東西都佔地方,連接出來不是RAM不夠就是ROM不夠,或者堆疊越界之類的錯誤了

(2)不是程式碼設計問題,同一個程式可以用查表法,也可以用其他的方法等,除法可以用/也可以用移位來實現,不同的實現方法花費的時間和空間不一樣的,一般來說優化後能執行的,不優化就肯定能執行的吧,只是效率問題了,這就是常說的犧牲時間換空間或者犧牲空間換時間了

(3)最近在做STM32模擬IIC的時序時,發現優化等級設定為-O1的時候能夠正常執行,但是設定成-O2,-O3的時候就出錯了,並且延時時間變得很難調整,正式被這個害慘了