以下のC ++ / MFCコードの意味を説明しましょう。
static CString MyFormat(LPCTSTR pszFormat, ...)
{
CString s;
va_list argList;
va_start( argList, pszFormat );
s.FormatV(pszFormat, argList);
va_end( argList );
return s;
}
static CString MyFormat2(int arg1, LPCTSTR pszFormat, ...)
{
if(arg1 == 1)
{
//How to call MyFormat() from here?
return MyFormat(pszFormat, ...); //???
}
//Do other processing ...
}
MyFormat()
内から電話するにはどうすればよいMyFormat2()
ですか?
これを直接行うことはできません。一度開くとva_list
、をとる関数に渡すことはできず、をとる関数...
にのみ渡すことができますva_list
。
これは、変数引数リストを受け取る複数の関数間で変数引数コードを共有することを妨げるものではありません。printf
+のパターンに従い、vprintf
取るオーバーロードを提供し、va_list
両方の場所から呼び出すことができます。
public:
static CString MyFormat(LPCTSTR pszFormat, ...) {
// Open va_list, and call MyFormatImpl
}
static CString MyFormat2(int arg1, LPCTSTR pszFormat, ...) {
// Open va_list, and call MyFormatImpl
}
private:
static CString MyFormatImpl(LPCTSTR pszFormat, va_list args) {
// Implementation of the common functionality
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加