私のコードには、次のようなスニペットが含まれています。
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()
接近しているため、それほど問題にはなりません。2つの間の呼び出しからの例外が問題になる可能性があります(またはそうではありませんか?)。
簡単なテストでは、va_start()
省略記号のない関数からの呼び出しは許可されていないことが示されています。許可された関数から呼び出さva_end()
れた関数とは異なる関数から呼び出すかどうか。va_start()
va_start()
基本的に、手動で呼び出してからインスタンスをstd::va_list
RAII / SBRMガードインスタンスに渡す必要がある場合でも、これらの呼び出しにSBRM / RAIIイディオムを使用できるかどうか知りたいですか?