【发布时间】:2012-08-21 22:19:22
【问题描述】:
我的代码包含如下 sn-ps:
std::va_list ap;
va_start(ap, msgfmt);
snprintf_buf buf;
const tchar * msg = buf.print_va_list(msgfmt, ap);
va_end(ap);
这些都很短,va_start() 和 va_end() 靠得很近,所以它们不是什么大问题。两者之间的调用异常可能是一个问题(或不是?)。
简单测试表明,不允许从没有省略号的函数调用va_start()。是否从与 va_start() 不同的函数调用 va_end() 是否允许调用?
基本上,我很好奇是否可以对这些调用使用 SBRM/RAII 习语,即使必须手动调用 va_start() 然后将 std::va_list 的实例传递给我的 RAII/SBRM 保护实例?
【问题讨论】:
标签: c++ raii variadic-functions