我正在使用 swprintf 将字符串构建到缓冲区中(使用循环等)。
const int MaxStringLengthPerCharacter = 10 + 1;
wchar_t* pTmp = pBuffer;
for ( size_t i = 0; i < nNumPlayers ; ++i)
{
const int nPlayerId = GetPlayer(i);
const int nWritten = swprintf(pTmp, MaxStringLengthPerCharacter, TEXT("%d,"), nPlayerId);
assert(nWritten >= 0 );
pTmp += nWritten;
}
*pTaskPlayers = '\0';
如果在测试期间断言从未命中,我可以确定它永远不会在实时代码中命中吗?也就是说,我是否需要检查 nWritten < 0 并处理它,还是我可以安全地假设不会有问题?
什么情况下可以返回-1?文档或多或少只是说明“如果功能失败”。在一个地方我读到如果它不能匹配参数(即格式化字符串到可变参数)它将失败,但这并不让我担心。
在这种情况下,我也不担心缓冲区溢出——我知道缓冲区足够大。