典型的例子:在易發生異常的代碼中使用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可變長度參數列表很好,只要您使用可變參數模板實現它們即可。 –