典型的例子:在易发生异常的代码中使用va_list是否安全?
void foo(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
// might throw, might not. who knows.
bar(fmt, args);
// uh-oh...
va_end(args);
}
这是一个糟糕的主意,即是它罕见的使用在C++ va_list
?如果我将bar
换成try-catch,是否有帮助?什么是一些替代品?
恕我直言变长参数列表是一个坏主意。看看'iostream'模型的合理解决方案。 –
只需将它包裹在try/catch中,它应该是“安全的”。 – jmucchiello
@EdHeal可变长度参数列表很好,只要您使用可变参数模板实现它们即可。 –