我正在開發嵌入式系統(Cortex M3)。爲了從設備發送一些數據到串口(在PC屏幕上顯示),我使用了一些使用putchar()方法的自己的函數。C中的任何函數而不是sprintf()?編譯後代碼大小太大
當我想給整數或浮動,我才能將其轉換爲字符字符串用sprintf(),並將它們發送到串行端口。
現在,他們的問題是,我使用的是Keil uVision IDE,它的最大版本爲32 KB。 每當我在不同的函數中調用sprintf()時,我不知道爲什麼編譯後代碼的大小增加太多。 我現在已經超過了32 KB,我不知道我必須改變我的一些功能,並使用別的東西而不是sprintf!
任何線索?
畢竟,儘量避免浮動,因爲它們的運行時庫組件在大多數情況下相當大且很慢。 – glglgl
由於執行它所需的大量代碼(尤其是浮點數),printf系列代價非常昂貴。一個整數只有printf是相當小的但仍然昂貴。你真的認爲你需要在嵌入式微控制器代碼中使用printf()嗎?你可以實現你自己的更便宜的解決方案。 –
也看看你的編譯器供應商提供的庫。通常會有多種風格的C std庫,功能會減少。例如,處理int和float的sprintf,但不是科學記數法。 –