计算 C 中的 Var Args 长度
我正在尝试将 asprintf()
移植到 Windows,因为它是 Linux 上的 GCC 库函数,而 Windows 上不存在。
我一直在计算 var args 的长度,这样我就可以为它们分配内存。我尝试了两种方法:
将 var args 写入文件,然后获取函数的结果(即写入的字节数 = var args 的长度),但它很愚蠢,因为用户将在他的文件中看到内部随机数据app dir
使用函数
vsprintf()
并将 NULL 作为第一个参数(要写入输出的变量),因此它返回 var args 的长度,但这失败了,因为它仅适用于 XP、Windows 7 不允许写入 NULL 变量。
关于如何解决这个问题还有更多想法吗?
I'm trying to port asprintf()
to windows, since its a GCC library function on Linux, and doesn't exist on Windows.
I'm stuck at calculating the var args' length so I can allocate memory for them. I tried two approaches:
Write the var args to a file, then taking the result of the function (which is the number of bytes written = var args' length) but its silly since the user will see internal random data in his app dir
Use the function
vsprintf()
with NULL as first parameter (the variable to write output to) so it returns the length of var args, but this one failed because it works on XP only, Windows 7 doesn't allow writing to a NULL variable.
Any more ideas on how to solve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试使用
_vscprintf
相反,它只返回所需的计数(不包括终止 null)Try using
_vscprintf
instead, it only returns the required count (not including the terminating null)