我正在开发一个使用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'没有多大帮助。 –