rke*_*erm 1 c++ linux windows printf cross-platform
我正在将现有的Windows应用程序移植到Linux.
The most of the OS APIs\ Microsoft non-standard extension functions can be easily (more or less...) replaced by equivalent Linux\ GCC APIs, however, I don't know how to deal with sprintf_s which gets variable numbers of arguments.
Does anyone have an idea (If you can please put the code example as well) for that?
Thank you all in advance.
首先,您可以将代码移植到使用C++ iostream(例如ostringstream)吗?这将完全消除sprintf函数行的所有可能问题,并且如果有有限数量的调用点可能是最佳选择.
如果这不是一个选项:该sprintf_s函数基本上是一个帮助防止错误(和外部滥用导致缓冲区溢出.来自http://msdn.microsoft.com/en-us/library/ce3zzk1k%28VS.80%29 .aspx我们知道它做了两件事:它检查格式字符串是否有效格式(这并不意味着它进行类型检查 - 它仍然不能这样做),它允许指定最大长度.
snprintf与...相比,最好的替代品会有限制sprintf_s.它不会进行格式字符串验证.并非所有版本都保证最终字符串将以空值终止:您始终希望在调用后将空值存储到缓冲区的最后一个字符,以确保最终字符串为空终止.
| 归档时间: |
|
| 查看次数: |
1691 次 |
| 最近记录: |