我正在開發一個使用GCC交叉編譯器(arm-none-eabi-)的ARM架構(裸機)程序。爲了保持代碼小,我使用「--specs = nano.specs」鏈接器標誌來鏈接到newlib-nano。 我碰到的問題是有在printf的「長長」的支持,即:newlib-nano long long support
long long int val = 1234;
pritnf("%lld", val);
添加「-u _printf_float」鏈接標誌不解決這個問題。它確實會使代碼大小增加9kB,但它似乎只是增加了浮點支持,沒有「長期」的支持。鏈接到newlib(刪除「--specs = nano.specs」標誌) - 雖然解決了問題 - 是不可接受的,因爲它會導致代碼大小增加46kB。
是否有任何標誌只重新啓用newlib-nano版本的printf的「long long」支持?
考慮打印出來的十六進制代替,這可以通過簡單地分成兩個'uint32_t's和打印這些來完成。 – unwind
這對於打印'-1234LL'沒有多大幫助。 –