gpt4 book ai didi

c++ - 如何正确使用 _snprintf_s()?

转载 作者:行者123 更新时间:2023-11-28 08:02:31 25 4
gpt4 key购买 nike

我正在尝试了解有关可重入调用的一些知识,并且正在尝试使用 _vsnprintf_r()。第一个参数似乎是一些struct _reent *。在 Cygwin 上,我似乎可以像这样使用它:_vsnprintf_r (_REENT,/* rest of the arguments here */)。它是否正确?即使在 Cygwin 之外,这是否正确?似乎确实缺少这方面的文件。我的 Google 和 Bing 搜索结果不是很好。

最佳答案

_vsnprintf_r不是标准函数。它由 cygwin 开发团队创建供内部使用。

_vsnprintf_r由常规 vsnprintf 调用,所以我会坚持使用常规 C此调用在 cygwin 上的版本。 cygwin 不保证 _vsnprintf_r无论如何都是可重入的,尤其是当您找不到任何关于它的文档时。

由于 cygwin 使用动态加载的库,该库在链接到它的所有进程之间共享状态,因此它使用 _<xxx>_r为每个进程提供自己的状态实例的调用版本,这通常是标准 UNIX 系统上的默认设置。由于这些函数由 cygwin 内部使用,您可能会发现 cygwin-developers mailing list为您的问题提供更好的资源。

这与 POSIX 定义的可重入函数(如 gmtime_r)形成对比。这些函数的非可重入版本返回指向库中静态内存的指针,因此创建了可重入版本以允许函数使用调用者传入的内存。

关于c++ - 如何正确使用 _snprintf_s()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11052261/

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