gpt4 book ai didi

glibc - 寻找 snprintf() 的 C 源代码

转载 作者:行者123 更新时间:2023-12-04 22:07:44 40 4
gpt4 key购买 nike

我需要将 snprintf() 移植到另一个不完全支持 GLibC 的平台。

我正在寻找 Glibc 2.14 源代码中的底层声明。我遵循了许多函数调用,但卡在 vfprintf() 上。然后它似乎调用 _IO_vfprintf(),但我找不到定义。可能是一个宏正在混淆事物。

我需要查看真正的 C 代码,该代码扫描格式字符串并计算如果输入缓冲区足够大,它将写入的字节数。

我也尝试在 newlib 1.19.0 中查找,但我卡在了 _svfprintf_r() 上。我在任何地方都找不到定义。

有人可以指出我对 snprintf() 的定义或另一个定义吗?

最佳答案

我花了相当长的时间挖掘资源以找到 _svfprintf_r() (和 friend )Newlib 中的定义。既然 OP 询问了它,我会为需要这些的可怜人发布我的发现。以下内容适用于 Newlib 1.20.0,但我想它在不同版本中或多或少是相同的。

实际来源位于 vfprintf.c 文件中。有一个宏_VFPRINTF_R设置为 _svfiprintf_r 之一, _vfiprintf_r , _svfprintf_r , 或 _vfprintf_r (取决于构建选项),然后相应地定义实际的实现功能:

int
_DEFUN(_VFPRINTF_R, (data, fp, fmt0, ap),
struct _reent *data _AND
FILE * fp _AND
_CONST char *fmt0 _AND
va_list ap)
{
...

关于glibc - 寻找 snprintf() 的 C 源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6356143/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com