следующие результаты строки в GetLastError()
возврата кода ошибки 122 (= ERROR_INSUFFICIENT_BUFFER)Является ли код ошибки Win32 122 несколько мягким в этом случае?
CString str = CString("'") + _T("%s") + CString("'");
Но это происходит только под VS2005 и не бывает в VS2015. Тем не менее я не вижу повреждения памяти или чего-либо в VS2005, а переменная str
содержит правильное значение. Должно ли это быть проблемой, связанной с предоставлением кода ошибки?
Причина этого, кажется, происходит из-за стечения широких символов и простых символьных строк и исправление просто sorround как остальные строки с _T("")
так строка кода будет выглядеть следующим образом:
CString str = CString(_T("'")) + _T("%s") + CString(_T("'"));
Но что действительно ли код ошибки 122 означает в исходной строке, когда только одна строка была Unicode? Что случилось на самом деле или это скорее похоже на предупреждение в этом случае?
ли вам SetLastError (0) как раз перед этой операцией? –
@ IgorR. Нет, но я проверяю значение перед этим вызовом и после него и изменяется от 0 до 122. – zar
Случайное обращение к GetLastError для вещей, которые не документированы в SetLastError при ошибке, приводит к бессмысленным результатам.Конкатенация строк, такая как вы делаете, не приводит к вызову SetLastError, поэтому любое значение, которое вы получаете от GetLastError, не имеет смысла. –