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'需要一個可變參數函數的參數(三個點'...'),即像'無效myfunction的(字符* fmt,...)','va_start'需要可變參數之前的最後一個參數。在你的代碼中,'fmt'是一個局部變量,我錯過了某處的可變參數。你能證明嗎? –
this line'int result = vwprintf(fmt,args);'試圖打印'char * fmt'空字符串http://www.cplusplus.com/reference/cwchar/vwprintf/ – PRDeving
@StephanLechner,對不起清楚。我剛剛編輯了代碼,所以它是我的原始代碼。 – benams