Mi código contiene fragmentos como éstos:SBRM/RAII para std :: va_list/va_start()/va_end utilizar
std::va_list ap;
va_start(ap, msgfmt);
snprintf_buf buf;
const tchar * msg = buf.print_va_list(msgfmt, ap);
va_end(ap);
Estos son cortos y va_start()
y va_end()
están muy cerca, así que no son un gran problema . Las excepciones de las llamadas entre los dos podrían ser un problema (¿o no?).
La prueba simple muestra que no se permite llamar va_start()
desde una función sin puntos suspensivos. ¿Se ha llamado o no permitido llamar a va_end()
desde una función diferente a va_start()
?
Básicamente, estoy ansioso por ver si es posible utilizar el lenguaje SBRM/RAII para estas llamadas, incluso si fuera necesario llamar va_start()
manualmente y después de pasar instancia de std::va_list
en mi RAII/SBRM ejemplo guardia?
¿De dónde es la cita? – wilx
@wilx: El estándar C99, 7.15.1/1. –