Visual C++ сообщает о том, что неверный параметр был передан fclose
, что параметр будучи FILE*
возвращаемый freopen_s:
#include <WinSock2.h>
#include <iostream>
int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) {
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(nCmdShow);
#ifdef _DEBUG
AllocConsole();
#else
AttachConsole(ATTACH_PARENT_PROCESS);
#endif
FILE* pCout;
freopen_s(&pCout, "conout$", "w", stdout); //returns 0
fclose(pCout);
#ifdef _DEBUG
system("pause");
#endif
FreeConsole();
return 0;
}
Если я не пытаться закрыть CONOUT $ в конец программы? Исключено ли исключение, поскольку указатель файла разделяется между процессами для всех консольных выходов?
Нет репродукции с Visual C++ 2013. Просьба предоставить полный реестр, демонстрирующий проблему. Что вызывает вызов «freopen_s»? (Если вы собираетесь вызывать вариант '_s', вам нужно проверить возвращаемый статус.) –
Возврат errno_t равен 0, что означает отсутствие ошибки, не так ли? – NmdMystery
Это происходит только в режиме деблокирования, хотя функция возвращает 0 в обоих случаях. – NmdMystery