gpt4 book ai didi

c++ - 替换 msvc 上的 vsscanf

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:06:09 27 4
gpt4 key购买 nike

我在将代码库从 linux (gcc) 移植到 windows (msvc) 时遇到了问题。似乎 C99 函数 vsscanf 不可用并且没有明显的替代品。

我读过有关使用内部函数 _input_l 并静态链接到 crt 运行时的解决方案,但不幸的是我无法静态链接,因为它会混淆应用程序加载的所有插件(作为 dll)。

那么是否有任何替代品或为 vsscanf 编写包装器的方法?

2016-02-24 更新:

当第一次询问时没有本地替代品,但从那时起 MSVC 已经实现了对此的支持以及更多。

  • VS2013并稍后实现 vsscanf 和 friend 。
  • C++11也包括支持。

最佳答案

一个应该有效的 hack:

int vsscanf(const char *s, const char *fmt, va_list ap)
{
void *a[20];
int i;
for (i=0; i<sizeof(a)/sizeof(a[0]); i++) a[i] = va_arg(ap, void *);
return sscanf(s, fmt, a[0], a[1], a[2], a[3], a[4], a[5], a[6], /* etc... */);
}

将 20 替换为您认为可能需要的最大参数数量。此代码的可移植性不是很好,但它仅适用于缺少 vsscanf 的特定损坏系统,因此应该没有那么重要。

关于c++ - 替换 msvc 上的 vsscanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2457331/

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