Поделиться через


Новые возможности Visual C++ в Visual Studio 2012

В этом документе новые и улучшенные функции в Visual C++ в Visual Studio 2012.

Сведения о других добавлениях в Visual Studio 2012 см. в разделе Новые возможности Visual Studio 2012, версия-кандидат.

ПримечаниеПримечание

Дополнительные сведения о функциях (IDE) интегрированной среды разработки для разработчиков, создают приложений Магазина Windows Разработка приложения Магазина Windows с помощью Visual Studio 2012 см. в разделе.

Улучшенная поддержка стандартов C++11

Hh409293.collapse_all(ru-ru,VS.110).gifБиблиотека стандартных шаблонов

  • Поддержка для нового Заголовки STL: <atomic>, <chrono>, <condition_variable>, <filesystem>, <future>, <mutex>, <ratio> и <thread>.

  • Чтобы оптимизировать использование ресурсов памяти, контейнеры теперь баз данных компактнее.Например, в режиме выпуска x86 с параметрами по умолчанию, std::vector сжало из 16 байт в Visual Studio 2010 к 12 байта в Visual Studio 2012 и std::map сжало из 16 байт в Visual Studio 2010 до 8 байт в Visual Studio 2012.

  • Включено, но не обязательно для C ++11 стандартным, реализованы СТРАШНЫЕ итераторы.Дополнительные сведения см. в документе СТРАШНОЕ назначения и инициализация итератора формат PDF.

Hh409293.collapse_all(ru-ru,VS.110).gifДругие усовершенствования C++11

  • Диапазон- зависимости для циклов. Можно написать более сложные циклы, которые работают с массивами, контейнерами STL и коллекциями Среда выполнения Windows в форме for (for-range-declaration :expression ).Это основной частью языковой поддержки.Для получения дополнительной информации см. Основанное на диапазоне выражение for (C++).

  • Не имеющие состояний лямбда-выражения, которые блоки кода, начинающиеся с пустым introducer лямбда-выражения [] и не сохраняют локальные переменные, теперь может быть неявно преобразован с откидным верхом с указателями функций согласно требованиям стандарта C ++11.Для получения дополнительной информации см. Lambda expressions in C++.

  • Поддержка распространяется перечислений. Перечисление- ключ enum class C C-++ теперь поддерживается.В следующем примере демонстрируется, как этот ключ перечисление- отличается от предыдущего расширения функциональности enum.

    enum class Element { Hydrogen, Helium, Lithium, Beryllium };
    void func1(Element e);
    func1(Hydrogen); // error C2065: 'Hydrogen' : undeclared identifier
    func1(Element::Helium); // OK
    

поддержка разработки приложения Магазина Windows

Компилятор и компоновщик Visual C++

  • Автоматический-vectorizer. Компилятор анализирует циклов в коде и, если это возможно, создает инструкции, использующие векторные регистры и инструкции, присутствующих во всех современных процессорах.Это делает циклы выполняться быстрее.(Инструкции процессора как SSE, для выполнения расширения SIMD).Не следует включать или задать эту оптимизацию, поскольку она применяется автоматически.

  • Автоматический-parallelizer. Компилятор может анализировать циклов в коде и для инструкции, которые распространяют вычисления между несколькими ядрами или процессоров.Это может создавать циклы выполняться быстрее.Необходимо задать эту оптимизацию, поскольку она не включена по умолчанию.Во многих случаях он позволяет включать #pragma loop(hint_parallel(N)) в коде непосредственно перед циклов, которые требуется внутри распараллеленного.

    Автоматическое - vectorizer и автоматическое - parallelizer могут работать совместно таким образом, что вычисления получение между несколькими ядрами и код для каждого ядре использует его векторные регистры.Для получения дополнительной информации см. Ошибки и предупреждения Автоматический-Parallelization.

Новое в Visual Studio 2012 Обновление 1

  • Целевой объект Windows XP при построении код C C-++.

    Можно использовать компилятор C и библиотеки Visual C-++ к целевому объекту Windows XP и Windows server 2003.Для получения дополнительной информации см. Настройка программ C++ 11 для Windows XP.

Поддержка параллельного программирования

Hh409293.collapse_all(ru-ru,VS.110).gifC, C-++ Accelerated Massive Parallelism (AMP)

C C-++ AMP ускоряет выполнение кода C к данным, используя преимущества параллельного оборудования, как это обычно GPU на дискретной видеокарте.Модель программирования C++ AMP включает в себя многомерные массивы, индексацию, передачу памяти, заполнение и библиотеку математических функций.С помощью расширений языка C и C-++ AMP ограничений компилятора можно элемента управления, как данные перемещен из ЦП в GPU и обратно.Для получения дополнительной информации см. C++ AMP (C++ Accelerated Massive Parallelism).

Hh409293.collapse_all(ru-ru,VS.110).gifC, C-++ Accelerated Massive Parallelism (AMP) отладку и профилирования

Отладка. Взаимодействие отладки для приложений, использующих C C-++ AMP к целевому объекту GPU так же, как и отладка для других приложений C и C-++.Это включает новые параллельных дополнения отладки, которые были упомянутые ранее.Дополнительные сведения см. в разделе Отладка кода GPU.

Профилирование. Теперь существуют профилирует поддержка действия GPU, основанная на C и C-++ AMP других моделях программирования Direct3D-based.Дополнительные сведения см. в разделе Граф активности GPU.

Hh409293.collapse_all(ru-ru,VS.110).gifОбщие усовершенствования параллельного программирования

С оборудованием переход к архитектурам многоядерной и много- ядра, разработчики могут больше не полагаться на постоянно увеличивающийся тактовых осуществлять из одноядерных.Поддержка параллельного программирования в Среда выполнения с параллелизмом позволяет разработчикам воспользоваться преимуществами этих новых архитектур.

В Visual Studio 2010, мощные библиотеки параллелизации C, C-++, например Библиотека параллельных шаблонов вставлена вместе с функциями, чтобы использовать преимущества параллелизма, быть сложные конвейеров потока данных.В Visual Studio 2012 эти библиотеки были расширять, чтобы обеспечить лучшую производительность, более элементов управления и расширенной поддержке параллельных шаблонов, разработчикам приходится большая часть.Ширина предлагать теперь включает:

Hh409293.collapse_all(ru-ru,VS.110).gifОбщие параллельные расширения отладки

Помимо окна Параллельные задачи и Параллельные стеки, Visual Studio 2012 содержит новое окно Контроль параллельных данных, чтобы можно было проверить ее значения выражения во всех потоков и процессов и выполнить сортировку и фильтрацию результатов.Можно также использовать собственные визуализаторы расширения окна и можно воспользоваться новой поддержки нескольких процессов во все окна инструментов.Для получения дополнительной информации см. Практическое руководство. Использование окна параллельных контрольных значений.

IDE

Средства в интегрированной среде разработки Visual Studio имеют значительные усовершенствования, помогающие быть производительнше при написании кода в C, C-++.Дополнительные сведения о усовершенствованиях интегрированной среды разработки см. в разделе Важнейшие аспекты продуктов Visual Studio 2012.

  • Поддержка шаблонов Visual Studio. Теперь можно использовать технологию шаблонов Visual Studio создайте проект шаблоны элементов C и C-++.

  • Асинхронной загрузки решения. Теперь проекты, ключевые части asynchronously-the решения первого - таким образом, можно начать работать быстрее.

  • Автоматическое развертывание для удаленной отладки. Была непосредственной развертывание файлов для удаленной отладки в Visual C# и C-++.Параметр развертывания в контекстном меню проекта автоматически копирует к удаленному компьютеру файлы, указанные в свойствах конфигурации отладки.Копирование файлов вручную на удаленный компьютер больше не требуются.Для получения дополнительной информации см. Удаленная отладка построенного локально проекта.

  • C++/CLI IntelliSense. C++/CLI теперь имеет полную поддержку IntelliSense.Функции IntelliSense, как краткие сведения, справка по параметрам, список членов и автозавершение теперь работают для C ++/CLI.Кроме того, IntelliSense и другие усовершенствования интегрированной среды разработки, перечисленные в этом документе также работают для C ++/CLI.

  • Расширенные подсказки IntelliSense. Подсказки кратких сведений IntelliSense C C-++ теперь отображаются более сложные данные стиля комментариев XML-документации.При использовании API из библиотека- для примера a, C, C-++ AMP- имеет комментарии XML-документации, то подсказка IntelliSense отображает больше информации, чем просто объявлением.Кроме того, если код содержит комментарии XML-документации, подсказки IntelliSense будут более обширные сведения.

  • Конструкции кода C и C-++. Общая схема код доступен для ключа, если- другой, для цикла и других базовых конструкций кода, в раскрывающемся списке элементов из списка.Выделите часть кода из списка, чтобы вставить его в код и затем заполнять необходимую логику.Можно также создать собственные части кода для использования в редакторе.Для получения дополнительной информации см. Фрагменты кода.

  • Перечень элементов из списка. Раскрывающийся список элементов из списка отображается автоматически при вводе код в редактор кода.Результаты будут отфильтрованы, чтобы только соответствующие члены будут отображаться при вводе.Элемент управления можно тип фильтрации логику, используемую членом Список- в диалоговом окне Параметры в Текстовый редактор, C/C++, Дополнительно.Дополнительные сведения см. в разделе Использование технологии IntelliSense.

  • Смысловая типа цветом. Типы, перечисления, макросов и другие токены C C-++ теперь имеют колоризацию по умолчанию.Для получения дополнительной информации см. Создание кода в редакторе кода и текста.

  • Выделение ссылок. Выбор символ теперь описываются все экземпляры этого символа в текущем файле.Нажмите Стрелку Ctrl+Shift+Up или Ctrl+Shift+Down стрелки для перемещения между выбранных ссылок.Можно отключить эту функцию в диалоговом окне Параметры выберите Текстовый редактор, C/C++, Дополнительно.

Средства управления жизненным циклом приложения

Hh409293.collapse_all(ru-ru,VS.110).gifСтатический анализ кода

Статический анализ для C C-++ был обновлен для предоставления более обширные сведения о контексте ошибки, несколько правил анализа и наилучших результатов анализа.В новом окне Анализ кода можно фильтрует сообщения ключевым словом, проектом, и важности.При размещении сообщение в окне, линия в коде, где сообщение было активировано выделяется в редакторе кода.Для некоторых предупреждения C C-++, сообщение отображаются линии источника, которые указывают, что путь выполнения это приводит к предупреждению; моменты принятия решений и причины для приема, что определенный путь выбран.

Анализ кода включен в последних версиях Visual Studio 2012.В наградные профессиональном, и типичные выпуски, включаются все правила.В выпусках Windows 8 и Windows Phone, только наиболее важные предупреждения включены.Анализ кода не включен в экспресс-выпуске для Интернета.

Ниже приведены другие улучшения анализа кода:

  • Новые предупреждения параллелизма помогают избежать ошибок параллелизма, что используются правильные блокирован дисциплин в многопоточном программах C C И C-++.Средство синтаксического анализа обнаруживает возможные состояния гонки, завороты порядка блокировки, вызывающий/вызываемый метод блокирован нарушений контракта, несоответствующие операции синхронизации и другие ошибки параллелизма.

  • Можно определить правила C, C-++, которые необходимо применить к запускающаяся анализа кода с помощью наборов правил.

  • В окне Анализ кода можно добавлять в исходный код pragma, блокирующая выбранное предупреждение.

  • Можно улучшить точность и полноту статического анализа кода с помощью новой версии Язык заметки источник- кода (Майкрософт) СОЛЬ, чтобы описать, как функция использует ее параметры, предположений, он делает их и гарантий, что делает его после его завершения.

  • Поддержка 64 - проектов C C-++.

Дополнительные сведения о том, как повысить качество кода см. в разделе Анализ качества приложений с помощью средств анализа кода.

Hh409293.collapse_all(ru-ru,VS.110).gifОбновленная структура тестирования модуля

Использование новой структуры тестирования модуля C C-++ в Visual Studio, чтобы создать модульные тесты C C-++.Добавьте новый проект модульных тестов в существующее решение C, C-++ поиск шаблона Проект модульных тестов C++ в категории Visual C++ в диалоговом окне Создать проект.Начните писать модульные тесты в созданную заглушке кода в Unittest1.cpp файле TEST_METHOD.Когда тестовый код создается, построение решения.Если необходимо выполнить тесты, чтобы открыть окно Обозреватель модульных тестов, выбрав Вид, Другие окна, Обозреватель модульных тестов и выберите в контекстном меню тестового случая требуется, выберите Запуск выбранного теста.После завершения тестового запуска можно просматривать результаты тестов и дополнительные данные трассировки стека в том же окне.См. разделы Проверка кода при помощи модульных тестов и Создание и запуск модульных тестов в приложении для Магазина Windows.

Hh409293.collapse_all(ru-ru,VS.110).gifАрхитектура графы зависимостей

Чтобы лучше понять код теперь можно создать графы зависимостей для бинарный, класс, пространство имен и включаемых файлов в решении.В строке меню выберите Архитектура, Сформировать диаграмму зависимостей, затем Для решения или Для включаемого файла, чтобы создать граф зависимостей.При создании графа готово, можно изучить его можно развернуть каждый узел, изучите отношения зависимостей путем перемещения между узлами и просмотреть исходный код, выбрав команду Просмотр содержимого в контекстном меню узла.Чтобы создать граф зависимостей для файлов включения, в контекстном меню для файла исходного кода *.cpp или файл заголовка *.h, выберите Создать диаграмму включаемых файлов.Дополнительные сведения см. в разделе Визуализация зависимостей кода на графах зависимостей.

Hh409293.collapse_all(ru-ru,VS.110).gifОбозреватель архитектуры

С помощью обозревателя архитектуры, можно изучить активы на решения, проекты, файлах C или C-++.В строке меню выберите Архитектура, Окна, Обозреватель архитектуры.Можно choice узел, поставщикам, например Представление классов.В этом случае в правой части окна инструментов развернута со списком пространств имен.Если выделить пространство имен, новый столбец отображается список классов, структур и перечислений в этом пространстве имен.Можно продолжать изучить активы или идется обратно в столбец на левом радикалах запуска другого запроса.Дополнительные сведения см. в разделе Поиск кода с помощью обозревателя архитектуры.

Hh409293.collapse_all(ru-ru,VS.110).gifПокрытие кода

Покрытие кода было обновлено динамически для инструментирования бинарный во время выполнения.Это снижает нагрузку конфигурации и обеспечивает более высокую производительность.Можно также собирать данные о покрытии кода из модульных тестов для приложений C и C-++.Дополнительные сведения о способах создания и выполнения модульных тестов см. в разделе структуры тестирования модуля данного документа.При создании модульных тестов C, C-++ с помощью Обозреватель модульных тестов можно находить тесты в решении.Выполнение модульных тестов и сбора данных о покрытии кода для их в Обозреватель модульных тестов, выберите команду Анализ покрытия кода.Можно проверить результаты покрытия кода окно- на Результаты покрытия кода в строке меню выберите Тест, Окна, Результаты покрытия кода.Дополнительные сведения см. в разделе Использование покрытия кода для определения объема протестированного кода.

См. также

Основные понятия

Новые возможности Visual Studio 2012, версия-кандидат

Другие ресурсы

Visual C#, C-++ Team Blog

Visual C#, C-++ в Visual Studio 2012