我正在使用 NO C-runtime
为目标平台编写代码。 没有 stdlib
,没有 stdio
。我需要像 snprintf
这样的字符串格式化函数,但它应该能够在没有任何依赖项的情况下运行
,甚至是 C 库。
最多只能依赖于我提供的内存分配函数
。
我检查了 Trio
但它需要 stdio.h header
。我不能用这个。
编辑
目标平台:PowerPC64 自制操作系统
(不是我做的)。但是,该库不应依赖于特定于操作系统的内容。
编辑2
我已经尝试了一些第 3 方开源库,例如 Trio(http://daniel.haxx.se/projects/trio/)、snprintf 和 miniformat(https://bitbucket.org/jj1/miniformat/src),但它们都依赖于 string.h、stdio.h 或(更糟糕的是)stdlib.h。如果已经存在我自己的实现,我不想编写它,因为那样会浪费时间并且容易出错。
最佳答案
尝试使用 uclibc 中的 snprintf 实现。这可能具有最少的依赖性。一些挖掘表明 snprintf 是根据 vsnprintf 实现的,而 vsnprintf 是根据 vfprintf 实现的(奇怪的是),它使用伪造的“流”来写入字符串。
这是一个指向代码的指针:http://git.uclibc.org/uClibc/tree/libc/stdio/_vfprintf.c
此外,快速谷歌搜索也发现了这个:
- http://www.ijs.si/software/snprintf/
- http://yallara.cs.rmit.edu.au/~aholkner/psnprintf/psnprintf.html
- http://www.jhweiss.de/software/snprintf.html
希望其中一个适合您的目的。这可能不是完整列表。
这里有一个不同的列表: http://trac.eggheads.org/browser/trunk/src/compat/README.snprintf?rev=197
关于c - 独立可移植的snprintf(),独立于标准库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19412780/