Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Visual Studio помогает обновить устаревший код C++ с параметрами компилятора, предупреждениями анализа кода и функциями редактора, такими как быстрые исправления, быстрые сведения и расширенная полоса прокрутки. Термин "устаревший код" относится к любой из следующих категорий:
Код, который ранее был разрешен компилятором Microsoft C++ (MSVC), но никогда не соответствовал стандарту C++.
Чтобы обновить старый несоответствующий код MSVC, включите параметр компилятора
/permissive-. Все экземпляры несоответствующих использования подчеркнуты красными волнистыми цветами в редакторе кода. Сообщения об ошибках в окне списка ошибок содержат рекомендацию по устранению ошибки. Щелкните код ошибки, чтобы перейти на страницу справки в документации. Если исправление всех ошибок одновременно нецелесообразно, вы можете обновить несоответствующий код на этапах, включив/permissive-этот параметр, исправив некоторые ошибки, а затем снова отключить этот параметр. Код будет компилироваться с новыми улучшениями, и вы можете вернуться и устранить оставшиеся проблемы позже. См./permissive-страницу примеров несоответствующего кода MSVC.Код, разрешенный в более ранней версии стандарта C++, но нерекомендуемый или удаленный в более поздней версии.
Чтобы обновить более новый языковой стандарт, задайте для параметра "Стандартный" язык C++ нужный стандарт и исправьте все возникающие ошибки компиляции. Как правило, мы рекомендуем задать стандарт языка для
/std:c++17или/std:c++20. Ошибки, возникающие при обновлении до более нового стандарта, не связаны с ошибками, возникающими при использовании/permissive-параметра.Код, соответствующий всем версиям стандарта, но больше не считается лучшей практикой в современном C++.
Чтобы определить код, в котором рекомендуется вносить изменения, выполните анализ кода.
Открытие и преобразование устаревшего проекта
Если устаревшие проекты основаны на более старой версии Visual Studio, их можно загрузить в более новую версию и работать с ней, сохраняя обратную совместимость со старой версией. Когда вы будете готовы окончательно перейти на новую версию Visual Studio, вы можете перенацелить проекты. Это позволит использовать последние средства сборки и функции проекта в интегрированной среде разработки, но вы больше не сможете загрузить перенацеливаемые проекты в более старой версии Visual Studio.
Чтобы перенацелить проекты в формат Visual Studio 2026, можно использовать помощник по настройке, который отображается при первом открытии решения, содержащего старые проекты. Вы также можете получить доступ к нему, щелкнув правой кнопкой мыши решение в обозревателе решений и выбрав решение retarget.
Затем помощник по настройке дает вам возможность остаться в старой версии и установить отсутствующие средства сборки или пакеты SDK для Windows, необходимые для сборки, или перенацелить проекты для их обновления. Вы можете сделать выбор перенастройки для каждого проекта в решении или выбрать Перенастроить всё>Применить для обновления.
Дополнительные сведения см. в статье Об обновлении проектов C++ из более ранних версий Visual Studio.
Список ошибок
После задания требуемого стандарта языка C++ и любых других параметров компилятора (>) нажмите клавиши CTRL+SHIFT+B, чтобы скомпилировать проект. Вы можете увидеть некоторые ошибки и предупреждения в виде красных волнистых волн в различных местах в коде. Ошибки также отображаются в списке ошибок. Дополнительные сведения об определенной ошибке щелкните код ошибки, чтобы перейти на страницу справки в документации. Коды ошибок, начинающиеся с "C", являются ошибками компилятора. Коды, начинающиеся с MSB, — это ошибки MSBuild, которые указывают на проблему с конфигурацией проекта.
Индикатор работоспособности документа
Индикатор работоспособности документа в нижней части редактора показывает количество ошибок и предупреждений в текущем документе и позволяет перейти непосредственно от одного предупреждения или ошибки к следующему.
Во многих случаях можно найти дополнительные сведения об определенной ошибке в документации по журналу изменений и улучшению соответствия Visual Studio.
- Улучшения соответствия C++
- Журнал изменений Visual C++ 2003 — 2015
- Общие сведения о возможных проблемах, возникающих при обновлении
Использование анализа кода для модернизации кода
При обновлении рекомендуется выполнить анализ кода в проекте, чтобы код соответствовал минимальным рекомендациям Майкрософт. Эти правила являются сочетанием правил, определенных корпорацией Майкрософт, и подмножеством основных рекомендаций C++ . Соблюдая эти возможности, вы значительно уменьшите или исключите распространенные источники ошибок, и в то же время сделает код более читаемым и, следовательно, проще поддерживать. Анализ кода с помощью рекомендуемых правил Майкрософт включен по умолчанию. Дополнительные правила можно включить в разделе "Анализ кода свойств>проекта".> Код, который нарушает одно из правил, помечается как предупреждение и подчеркивается зеленым волнистой линией в редакторе кода. Наведите указатель мыши на волнистую подсказку QuickInfo , описывающую проблему.
Щелкните значок фильтра в столбце "Код ", чтобы выбрать, какие предупреждения отображаются.
Ошибки анализа кода и предупреждения также отображаются в списке ошибок компилятора, как и в списке ошибок компилятора.
Вы можете изменить активные правила и создать настраиваемые наборы правил. Дополнительные сведения об использовании анализа кода см. в разделе "Анализ кода" для C/C++.
Использование быстрых действий для модернизации кода
Редактор кода предоставляет краткие действия для некоторых распространенных рекомендаций. Когда отображается значок лампочки, щелкните его, чтобы просмотреть доступные быстрые действия.
Преобразование макросов в функции constexpr
На следующем рисунке показано использование макроса AVERAGE, который имеет семантику цветов по умолчанию. На изображении также показана подсказка QuickInfo, отображаемая при наведении курсора мыши на него:
Поскольку использование макросов не рекомендуется в современном C++, Visual Studio упрощает преобразование макросов в constexpr функции:
Щелкните правой кнопкой мыши
AVERAGEи выберите "Перейти к определению".Щелкните значок отвертки и выберите "Преобразовать макрос в constexpr"
Макрос преобразуется, как показано ниже:
И вызов AVERAGE теперь цветен в виде вызова функции, а подсказка "Быстрая информация" показывает выводимый тип функции:
Инициализация переменных
Неинициализированные переменные могут содержать случайные значения, которые приводят к серьезным ошибкам. Анализ кода помечает эти экземпляры, а редактор предоставляет быстрое действие:
Преобразование в необработанный строковый литерал
Необработанные строковые литералы менее подвержены ошибкам и удобнее вводить, чем строки со встроенными escape-символами. Щелкните правой кнопкой мыши строку и выберите быстрые действия , чтобы преобразовать ее в необработанный строковый литерал.
Строка преобразуется в: R"(C:\Users\bjarnes\demo\output.txt)"