0
vwprintf
から負の値が返され、メッセージが表示されません。 ドキュメントでは、負の戻り値はエラーが発生したことを意味しますが、エラーコードまたはメッセージを見つける方法を見つけることができます(errno
の値は変更されません)。 エラーを見つけるにはどうすればよいですか?vwprintfエラー処理(errnoは0を表示)
私のコード:
void func(const wchar_t * fmt, ...) const
{
// fmt is not empty
errno = 0;
va_list args;
va_start(args, fmt);
int result = vwprintf(fmt, args); // result = -1
if(result < 0)
{
int isError = ferror(stdout); //isError = 1
int errorCode = errno; //errorCode = 0
}
printf("\n");
va_end(args);
}
'va_args'は可変引数関数の引数が必要です(3つのドット' ... ')、すなわち'空のMyFunction(文字のようなものは* fmt、...) 'であり、' va_start'は変数の前に最後の引数が必要です。あなたのコードでは、 'fmt'はローカル変数です。私はどこかで可変引数を見逃しています。それを見せてもらえますか? –
この行 'int result = vwprintf(fmt、args);'は空文字列 'char * fmt'を印刷しようとしていますhttp://www.cplusplus.com/reference/cwchar/vwprintf/ – PRDeving
@StephanLechner、申し訳ありません明らかです。私はコードを編集して元のコードにしました。 – benams