none
Ошибка error C3861: '_setmode': identifier not found при компиляции консольного приложения Visual С++. RRS feed

  • Вопрос

  • При компиляции кода консольного приложения C++ в Visual Studio 2017 Community, которое использует функцию _setmode, выводятся следующие ошибки:

    error C2065: '_O_U16TEXT': undeclared identifier

    error C3861: '_setmode': identifier not found

    Ниже привожу код, в котором используется вызов _setmode:

    #include <iostream>
    #include <stdio.h>
    #include <fcntl.h>
    #include <io.h>
    #include "pch.h"
    #include "DelaunayInitialization.h"
    #include "DelaunayTriangulation.h"
    #include "DelaunayWriteToFile.h"
    #include "DelaunayChecking.h"
    #include "DelaunayDeinitializition.h"
    
    int wmain(int argc, wchar_t* argv[], wchar_t* envp[])
    {
    	int res1 = _setmode(_fileno(stdout), _O_U16TEXT);
    	int res2 = _setmode(_fileno(stdin), _O_U16TEXT);
    	int res3 = _setmode(_fileno(stderr), _O_U16TEXT);
    
    	std::wcout << L"Тебя как зовут? ";
                          .
                          .
                          .
    }
    Все заголовки, требуемые для _setmode - есть. Специально показываю как расположены мои собственные заголовки. Вроде всё нормально. Из-за чего же тогда при компиляции возникают приведённые выше ошибки? Скажите, пожалуйста.


Ответы

  • Файл pch.h должен включаться первым, если предкомпилированные заголовки включены. Если нет - его в проекте вообще не должно быть. 
    • Помечено в качестве ответа Purple_Apple 28 мая 2019 г. 14:26

Все ответы