Страницы свойств C/C++

Следующие страницы свойств находятся в разделе Проект>Свойства>Свойства конфигурации>C/C++:

Общие свойства C/C++

Дополнительные каталоги включаемых файлов

Указывает один или несколько каталогов для добавления в путь включения. Разделите каталоги с запятой (;), если существует несколько каталогов. Задает параметр компилятора /I (каталоги включения, дополнительные).

Дополнительные каталоги #using

Указывает один или несколько каталогов поиска для разрешения имен, переданных директиве #using. Разделите каталоги с запятой (;) при добавлении нескольких каталогов. Задает параметр компилятора /AI .

Дополнительные каталоги BMI

Указывает один или несколько каталогов, в которых следует искать для разрешения переданных директиве import имен. Разделите каталоги с запятой (;) при добавлении нескольких каталогов. Задает параметр компилятора /ifcSearchDir[path] .

Дополнительные зависимости модулей

Указывает один или несколько модулей, используемых для разрешения имен, переданных директиве import . Разделите каталоги с запятой (;) при добавлении нескольких каталогов. Задает параметр компилятора /reference .

Дополнительные зависимости единиц заголовка

Указывает один или несколько блоков заголовков, используемых для определения имен, передаваемых директиве заголовка import. Разделите каталоги с запятой (;) при добавлении нескольких каталогов. Задает параметр компилятора /headerUnit .

Источники сканирования для зависимостей модуля

Если для этого свойства задано значение Yes, компилятор сканирует все источники C++, а не только интерфейс модуля и источники единиц заголовка для зависимостей модулей и блоков заголовков. Система сборки создает полный граф зависимостей, который гарантирует, что все импортированные модули и блоки заголовков создаются перед компиляцией файлов, зависящих от них. Когда для параметров Сканировать исходные файлы на наличие зависимостей модулей и Преобразовывать директивы include в import одновременно установлено значение Да, любой файл заголовка, указанный в файле header-units.json, находящемся в том же каталоге, что и этот файл заголовка, компилируется в единицу заголовка.

Файлы с расширением .ixx, а также файлы, для которых свойству Compile As в свойствах файла>C/C++>Advanced> присвоено значение Компилировать как единицу заголовка C++ (/exportHeader), всегда сканируются.

Файлы с расширением .ixx, и файлы, у которых свойство Файл>C/C++>Compile As установлено в Компилировать как единицу заголовка C++ (/exportHeader), всегда сканируются.

Переведите "Includes" на "Imports"

Если для этого свойства задано значение "Да", компилятор обрабатывает #include директиву как директиву import , если выполняются определенные условия: файл заголовка указывается в header-units.json файле в том же каталоге, а для файла заголовка доступен скомпилированный блок заголовка ( .ifc файл). В противном случае файл заголовка рассматривается как обычный #include. Файл header-units.json используется для создания блоков заголовков для каждого #include без дублирования символов. Если для Преобразовывать include в import и Сканировать исходные файлы на наличие зависимостей модулей установлено значение Да, компилятор автоматически находит все файлы заголовков, которые можно скомпилировать в единицы заголовков. Это свойство задает параметр компилятора /translateInclude .

Формат отладочной информации

Определяет тип отладочной информации, создаваемой компилятором. Для данного свойства требуются совместимые настройки компоновщика. Задает /Z7опции компилятора, /Zi/ZI (формат сведений отладки).

Варианты выбора

  • Нет (None) — не создает сведений об отладке, поэтому компиляция может быть быстрее.
  • Совместимый с C7 (OldStyle) — создает объектные файлы, содержащие полную информацию о символьной отладке. Файл PDB не создается.
  • База данных программы (ProgramDatabase) — создает базу данных программы (PDB), содержащую сведения о типах и символьные сведения об отладке для использования с отладчиком. Сведения о символьной отладке включают имена и типы переменных и функций, а также номера строк.
  • База данных программы для изменения и продолжения (EditAndContinue) — создает базу данных программы, как описано ранее, в формате, поддерживающем функцию "Изменить и продолжить ".

Поддержка отладки только моего кода

Добавляет вспомогательный код для включения отладки Just My Code в этой единице компиляции. Наборы /JMC.

Поддержка динамической отладки C++

(предварительная версия) Задает флаг /dynamicdeopt компилятора для включения динамической отладки C++. Размещайте неоптимизованные точки останова и выполняйте переход внутрь функций в любом месте с деоптимизацией функции по запросу. Используйте этот режим для отладки оптимизированного кода.

Поддержка общей языковой среды выполнения

Используйте службу среды выполнения .NET. Этот параметр несовместим с некоторыми другими коммутаторами. Дополнительные сведения см. в /clr документации по семейству коммутаторов.

Варианты выбора

  • Поддержка Common Language Runtime (CLR) отсутствует — Поддержка среды выполнения Common Language Runtime (CLR) отсутствует.
  • Поддержка среды CLR — создает метаданные для вашего приложения, используемые другими приложениями CLR. Кроме того, приложение может потреблять типы и данные в метаданных других компонентов среды CLR.
  • Pure MSIL Common Language RunTime Support — создает выходной файл только MSIL без собственного исполняемого кода, хотя он может содержать собственные типы, скомпилированные в MSIL.
  • Безопасная поддержка общего языка времени выполнения MSIL — создается только для MSIL (без собственного исполняемого кода) и с проверяемым выходным файлом.

Потребление расширения среды выполнения Windows

Используйте языковые расширения среды выполнения Windows. Наборы /ZW.

Отключить загрузочное объявление

Подавляет отображение баннера входа при запуске компилятора и отображении информационных сообщений во время компиляции.

Уровень предупреждений

Выберите уровень строгости компилятора по отношению к ошибкам в коде. Наборы /W0 - /W4.

Варианты выбора

  • Отключить все предупреждения . Уровень 0 отключает все предупреждения.
  • Уровень 1 . Уровень 1 отображает серьезные предупреждения. Уровень 1 — это уровень предупреждения по умолчанию в командной строке.
  • Уровень 2 - Уровень 2 отображает все предупреждения уровня 1 и менее серьезные предупреждения.
  • Уровень 3 . Уровень 3 отображает все предупреждения уровня 2 и все другие предупреждения, рекомендуемые для рабочих целей.
  • Уровень 4 — уровень 4 отображает все предупреждения уровня 3 и информационные предупреждения, которые в большинстве случаев можно безопасно игнорировать.
  • EnableAllWarnings — включает все предупреждения, включая отключенные по умолчанию.

Обрабатывать предупреждения как ошибки

Обрабатывает предупреждения компилятора как ошибки. Для нового проекта лучше всего использовать /WX в каждой компиляции. Устраните все предупреждения, чтобы свести к минимуму дефекты кода, которые трудно найти.

Версия предупреждения

Скрыть предупреждения, появившиеся после определенной версии компилятора. Наборы /Wv:xx[.yy[.zzzzz]].

Формат диагностики

Включает расширенные диагностики с информацией о столбцах и контекстом исходного кода в диагностических сообщениях.

Варианты выбора

  • Caret — предоставляет сведения о столбце в диагностическом сообщении. Также выводит соответствующую строку исходного кода с символом каретки, указывающим на столбец, в котором находится ошибка.
  • Информация о столбце - также указывает номер столбца в строке, в которой выдана диагностика, если это применимо.
  • Классический — выводит только предыдущие краткие диагностические сообщения с номером строки.

Проверки SDL

Дополнительные проверки, рекомендуемые жизненным циклом безопасной разработки (SDL). Включает дополнительные функции безопасной генерации кода и обрабатывает дополнительные предупреждения, связанные с безопасностью, как ошибки. Наборы /sdl, /sdl-.

Многопроцессорная компиляция

Включите компиляцию с несколькими процессорами. Задает параметр компилятора /MP .

Включить санитайзер адресов

Компилирует и связывает программу с инструментированием AddressSanitizer. Это свойство в настоящее время поддерживает целевые сборки x86 и x64. Задает параметр компилятора /fsanitize .

Включить поддержку фуззера (экспериментальная)

Компилирует программы с фаззером. Включите AddressSanitizer для получения наилучших результатов. В настоящее время доступно для сборок x86 и x64. Наборы /fsanitize=fuzzer.

Свойства оптимизации C/C++

Оптимизация

Выберите параметр оптимизации кода. Выберите "Настраиваемый", чтобы использовать определенные параметры оптимизации. Наборы /Od, /O1/O2.

Варианты выбора

  • Настраиваемый — настраиваемая оптимизация.
  • Отключено — отключить оптимизацию.
  • Максимальная оптимизация (приоритет размера) — эквивалентно /Os /Oy /Ob2 /Gs /GF /Gy.
  • Максимальная оптимизация (приоритет скорости) — эквивалентно /Oi /Ot /Oy /Ob2 /Gs /GF /Gy.
  • Оптимизации (приоритет скорости) — эквивалентно /Oi /Ot /Oy /Ob2.

Расширение встроенной функции

Выберите уровень расширения встроенной функции для сборки. Наборы /Ob.

Варианты выбора

  • По умолчанию
  • Отключено — отключает встроенное расширение, которое по умолчанию включено.
  • Только __inline — расширяет только функции, помеченные как inline, __forceinlineили __inline. Или, в функции-члене C++, определенной в объявлении класса.
  • Любой подходящий — расширяет функции, помеченные как inline или __inline, а также любую другую функцию, которую выбирает компилятор. (Расширение происходит по усмотрению компилятора. Это расширение, выбранное компилятором, часто называется автооблицированием.)

Включение встроенных функций

Включает встроенные функции. Использование встроенных функций создает более быстрый, но, возможно, более крупный код. Наборы /Oi.

Предпочитать размер или скорость

Чему отдать предпочтение: размеру кода или скорости его выполнения. Global Optimization должен быть включен. Наборы /Ot, /Os.

Варианты выбора

  • Предпочтение небольшому коду — минимизирует размер EXE и DLL, указывая компилятору отдавать предпочтение размеру, а не скорости.
  • Предпочитать быстрый код. Максимально повышает скорость EXE и DLL, инструктируя компилятор предпочитать скорость перед размером. (Это значение по умолчанию при включении оптимизации.)
  • Нет размера и оптимизации скорости.

Опустить указатели кадров

Подавляет создание указателей фреймов в стеке вызовов.

Включить оптимизации, безопасные для волокон

Включает оптимизации, безопасные при использовании волокон, для приложений, использующих волокна для доступа к локальному хранилищу потока. Наборы /GT.

Оптимизация всей программы

Обеспечивает оптимизацию между модулями с помощью задержки генерации кода до времени связывания. Требуется опция компоновщика Link Time Code Generation. Наборы /GL.

Свойства препроцессора C/C++

Определения препроцессора

Определяет символы предобработки для исходного файла.

Отменить определения препроцессора

Задает одну или несколько отмен определений препроцессора. Наборы /U.

Отменить все определения препроцессора

Отменяет все объявленные ранее определения препроцессора. Наборы /u.

Игнорировать стандартные пути включения

Запрещает компилятору искать файлы для включения в каталогах, указанных в переменных среды INCLUDE.

Предварительная обработка файла

Предварительно обрабатывает исходные файлы C и C++ и записывает предварительно обработанные выходные данные в файл. Этот параметр подавляет компиляцию и не создает .obj файл.

Предварительная обработка скрытие номеров строк

Предварительная обработка без директив #line.

Сохранить комментарии

Включите этот параметр для сохранения исходных примечаний C и C++ (/и /* ... */) в .i файлах и других выходных данных препроцессора. Препроцессор удаляет комментарии по умолчанию.

Требуется установить по крайней мере один из параметров предварительной обработки . Наборы /C.

Используйте препроцессор, соответствующий стандартам

Используйте стандартный препроцессор (/Zc:preprocessor). В настоящее время подразумевается версиями /std:c11 и более поздними. Чтобы использовать устаревший препроцессор, задайте для этого свойства значение No.

Свойства создания кода C/C++

Включение пула строк

Включите это свойство для включения пула строк, который объединяет идентичные строки в одну копию только для чтения в скомпилированной программе. Это может привести к меньшим программам. /O1, /O2, и /ZI автоматически задают параметр /GF.

Включить минимальное перестроение

Включает минимальное перестроение, определяющее, следует ли перекомпилировать исходные файлы C++ с файлами заголовков (H), содержащими измененные определения классов C++.

Включить исключения C++

Задает модель обработки исключений, используемую компилятором.

Варианты выбора

  • Да с исключениями SEH — модель обработки исключений, которая перехватывает асинхронные (структурированные) и синхронные исключения (C++). Наборы /EHa.
  • Да . Модель обработки исключений, которая перехватывает только исключения C++ и настраивает компилятору, чтобы предположить, что extern "C" функции никогда не вызывают исключение C++. Наборы /EHsc.
  • Да, с функциями extern "C" — модель обработки исключений, которая перехватывает только исключения C++ и настраивает компилятор так, чтобы считать, что функции extern "C" могут выдавать исключение. Наборы /EHs.
  • Нет: обработка исключений отсутствует.

Проверка меньшего типа

Позволяет проверять преобразование в небольшие типы. Несовместим с любым типом оптимизации, кроме отладки. Наборы /RTCc.

Базовые проверки среды выполнения

Включает основные проверки ошибок во время выполнения. Несовместим с любым типом оптимизации, кроме отладки. Наборы /RTCs, /RTCu, /RTC1.

Варианты выбора

  • Фреймы стека — включает проверку ошибок времени выполнения для фреймов стека.
  • Неинициализированные переменные — сообщает, когда переменная используется без инициализации.
  • Оба (/RTC1, equiv. to /RTCsu) — эквивалент /RTCsu.
  • По умолчанию — проверки среды выполнения по умолчанию .

Библиотека времени выполнения

Указывает библиотеку среды выполнения для связывания. Наборы /MT, /MTd, /MD, /MDd.

Варианты выбора

  • Многопоточное — приводит к тому, что приложение будет использовать многопоточную статическую версию библиотеки среды выполнения.
  • Многопоточная отладка — определяет _DEBUG и _MT. Этот параметр также приводит к тому, что компилятор помещает имя библиотеки LIBCMTD.lib в .obj файл, чтобы компоновщик использовал LIBCMTD.lib для разрешения внешних символов.
  • Многопоточная DLL — приложение использует DLL-версию библиотеки времени выполнения с поддержкой многопоточности. Определяет _MT и _DLL, в результате чего компилятор помещает имя библиотеки MSVCRT.lib в файл .obj.
  • Многопоточная библиотека DLL отладки— определяет _DEBUG_MTи _DLL приводит к тому, что приложение будет использовать отладочную, многопоточную версию библиотеки выполнения. Он также приводит к тому, что компилятор помещает имя библиотеки MSVCRTD.lib в .obj файл.

Выравнивание элементов структуры

Задает границы 1, 2, 4, 8 или 16 байтов для выравнивания элементов структуры. Наборы /Zp.

Варианты выбора

  • 1 Байт — упаковка структур по границам в один байт. Эквивалентно /Zp.
  • 2 байта — упаковывает структуры на двухбайтовых границах.
  • 4 байта — упаковка структур по границам в четыре байта.
  • 8 Байт — пакетирование структур по восьмибайтовым границам (по умолчанию).
  • 16 Байт — упаковывает структуры по шестнадцатибайтовым границам.
  • По умолчанию — параметры выравнивания по умолчанию .

Задает 1, 2, 4 или 8-байтовые границы для выравнивания элементов структуры. Наборы /Zp.

Варианты выбора

  • 1 Байт — упаковка структур по границам в один байт. Эквивалентно /Zp.
  • 2 байта — упаковывает структуры на двухбайтовых границах.
  • 4 байта — упаковка структур по границам в четыре байта.
  • 8 Байт — пакетирование структур по восьмибайтовым границам (по умолчанию).
  • По умолчанию — параметры выравнивания по умолчанию .

Проверка безопасности

Помогает обнаруживать переполнение буфера стека, которое злоумышленники могут использовать для компрометации приложения.

Варианты выбора

  • Отключить проверку безопасности — устанавливает /GS-.
  • Включить проверку безопасности — устанавливает /GS.

Защита потока управления

Помогает обнаруживать попытки передачи управления недопустимым блокам кода.

Варианты выбора

  • Да . Включите функцию управления Flow Guard. Наборы /guard:cf.
  • Нет

Включить компоновку на уровне функций

Компилятор может упаковывать отдельные функции в форме упакованных функций (COMDAT). Необходимо для редактирования кода и продолжения работы. Наборы /Gy.

Включение параллельного создания кода

Позволяет компилятору создавать параллельный код для циклов, определенных с использованием #pragma loop(hint_parallel[(n)]) при включенной оптимизации.

Включение расширенного набора инструкций

Включите использование инструкций, найденных на процессорах, поддерживающих расширенные наборы инструкций. Например, усовершенствования SSE, SSE2, AVX и AVX2 для IA-32, а также улучшения AVX и AVX2 до x64. /arch:SSE доступен только для сборок x86. /arch:SSE2 доступен для сборок x86 и x64 и используется по умолчанию для обеих архитектур. Использование расширенных инструкций можно отключить с помощью /arch:IA32. Дополнительные сведения см. в разделе /arch (x86), /arch (x64), /arch (ARM64), и /arch (ARM).

Варианты выбора

  • Потоковые расширения SIMD (X86) — включает потоковые расширения SIMD. Наборы /arch:SSE.
  • Потоковые расширения SIMD 2 (X86) — включает поддержку потоковых расширений SIMD 2. Наборы /arch:SSE2.
  • Расширенные расширения векторов (X86/X64) — включает расширенные расширения векторов. Наборы /arch:AVX.
  • Расширенные расширения векторов 2 (X86/X64) — включает расширенные расширения векторов 2. Наборы /arch:AVX2.
  • Расширенные расширения векторов 512 (X86/X64) — включает расширенные расширения векторов 512. Наборы /arch:AVX512.
  • Расширенные расширения векторов AVX10.1 (X86/X64) — включает расширенные векторные расширения 10 версии 1. Наборы /arch:AVX10.1.
  • Расширенные расширения векторов AVX10.2 (X86/X64) — включает расширенные расширения векторов 10 версии 2. Наборы /arch:AVX10.2.
  • Расширения виртуализации (ARM). Включает расширения виртуализации ARM. Наборы /arch:ARMv7VE.
  • Инструкции ARM VFPv4 (ARM). Включает инструкции ARM VFPv4. Наборы /arch:VFPv4.
  • Требования к расширению ЦП ARMv8.0-A (ARM64). Включает требования ARMv8.0-A. Наборы /arch:arm8.0.
  • Требования к расширению ЦП ARMv8.1-A (ARM64). Включает требования ARMv8.1-A. Наборы /arch:arm8.1.
  • Требования к расширению ЦП ARMv8.2-A (ARM64). Включает требования ARMv8.2-A. Наборы /arch:arm8.2.
  • Требования к расширению ЦП ARMv8.3-A (ARM64). Включает требования ARMv8.3-A. Наборы /arch:arm8.3.
  • Требования к расширению ЦП ARMv8.4-A (ARM64). Включает требования ARMv8.4-A. Наборы /arch:arm8.4.
  • Требования к расширению ЦП ARMv8.5-A (ARM64). Включает требования ARMv8.5-A. Наборы /arch:arm8.5.
  • Требования к расширению ЦП ARMv8.6-A (ARM64). Включает требования ARMv8.6-A. Наборы /arch:arm8.6.
  • Требования к расширению ЦП ARMv8.7-A (ARM64). Включает требования ARMv8.7-A. Наборы /arch:arm8.7.
  • Требования к расширению ЦП ARMv8.8-A (ARM64). Включает требования ARMv8.8-A. Наборы /arch:arm8.8.
  • Без расширенных инструкций . Отключает расширенные инструкции для сборок x86. Наборы /arch:IA32.
  • Не задано — явно не задаёт параметр /arch.

Включите использование инструкций, найденных на процессорах, поддерживающих расширенные наборы инструкций. Например, усовершенствования SSE, SSE2, AVX и AVX2 для IA-32, а также улучшения AVX и AVX2 до x64. В настоящее время /arch:SSE и /arch:SSE2 доступны только при сборке для архитектуры x86. Если параметр не указан, компилятор использует инструкции, найденные на процессорах, поддерживающих SSE2. Использование расширенных инструкций можно отключить с помощью /arch:IA32. Дополнительные сведения см. в разделе /arch (x86), /arch (x64), /arch (ARM64), и /arch (ARM).

Варианты выбора

  • Streaming SIMD Extensions (X86) — включает Streaming SIMD Extensions. Наборы /arch:SSE.
  • Потоковые SIMD-расширения 2 (X86) — включает потоковые SIMD-расширения 2. Наборы /arch:SSE2.
  • Расширенные расширения векторов (X86/X64) — включает расширенные расширения векторов. Наборы /arch:AVX.
  • Расширенные расширения векторов 2 (X86/X64) — включает расширенные расширения векторов 2. Наборы /arch:AVX2.
  • Расширенные расширения векторов 512 (X86/X64) — включает расширенные расширения векторов 512. Наборы /arch:AVX512.
  • Расширенные расширения векторов AVX10.1 (X86/X64) — включает расширенные векторные расширения 10 версии 1. Наборы /arch:AVX10.1.
  • Расширения виртуализации (ARM). Включает расширения виртуализации ARM. Наборы /arch:ARMv7VE.
  • Инструкции ARM VFPv4 (ARM). Включает инструкции ARM VFPv4. Наборы /arch:VFPv4.
  • Требования к расширению ЦП ARMv8.0-A (ARM64). Включает требования ARMv8.0-A. Наборы /arch:arm8.0.
  • Требования к расширению ЦП ARMv8.1-A (ARM64). Включает требования ARMv8.1-A. Наборы /arch:arm8.1.
  • Требования к расширению ЦП ARMv8.2-A (ARM64). Включает требования ARMv8.2-A. Наборы /arch:arm8.2.
  • Требования к расширению ЦП ARMv8.3-A (ARM64). Включает требования ARMv8.3-A. Наборы /arch:arm8.3.
  • Требования к расширению ЦП ARMv8.4-A (ARM64). Включает требования ARMv8.4-A. Наборы /arch:arm8.4.
  • Требования к расширению ЦП ARMv8.5-A (ARM64). Включает требования ARMv8.5-A. Наборы /arch:arm8.5.
  • Требования к расширению ЦП ARMv8.6-A (ARM64). Включает требования ARMv8.6-A. Наборы /arch:arm8.6.
  • Требования к расширению ЦП ARMv8.7-A (ARM64). Включает требования ARMv8.7-A. Наборы /arch:arm8.7.
  • Требования к расширению ЦП ARMv8.8-A (ARM64). Включает требования ARMv8.8-A. Наборы /arch:arm8.8.
  • Без расширенных инструкций . Отключает расширенные инструкции для сборок x86. Наборы /arch:IA32.
  • Не задано — явно не задаёт параметр /arch.

Варианты выбора

  • Расширения SIMD потоковой передачи — расширения SIMD потоковой передачи. Задает /arch:SSE
  • Расширения набора команд для потоковой обработки SIMD 2 — Расширения набора команд для потоковой обработки SIMD 2. Задает /arch:SSE2
  • Расширенные векторные расширения (AVX) - Расширенные векторные расширения. Задает /arch:AVX
  • Расширенные векторные расширения 2 — расширенные расширения векторов 2. Задает /arch:AVX2
  • Нет расширенных инструкций — отсутствие улучшенных инструкций Задает /arch:IA32
  • Не задано — не задано .

Включение длины вектора

Включите выбор длины вектора для /arch:AVX512 и /arch:AVX10.x флагов. Допустимые значения: 256 и 512 бит (X86/X64).

Модель с плавающей запятой

Задает модель с плавающей запятой. Наборы /fp:precise, /fp:strict, /fp:fast.

Варианты выбора

  • Точное значение — по умолчанию. Улучшает согласованность тестов с плавающей запятой для равенства и неравенства.
  • Strict — самая строгая модель с плавающей запятой. /fp:strict приводит к отключению fp_contract и включению fenv_access. /fp:except подразумевается и может быть отключен, явно указав /fp:except-. При использовании с /fp:except-, /fp:strict применяет строгую семантику с плавающей запятой, но без уважения к исключительным событиям.
  • Быстрое создание самого быстрого кода в большинстве случаев.

Включение исключений с плавающей запятой

Надежная модель исключений с плавающей точкой. Исключения будут вызываться немедленно после их срабатывания. Наборы /fp:except.

Создать образ с возможностью горячей перезагрузки

При включенной функции горячего исправления компилятор гарантирует, что первая инструкция каждой функции составляет ровно два байта, как требуется для этого. Наборы /hotpatch.

Устранение рисков Spectre

Смягчение последствий Spectre для CVE 2017-5753. Наборы /Qspectre.

Варианты выбора

  • Включено — включает меры защиты от Spectre для CVE 2017-5753.
  • Все загрузки — включить защиту от Spectre для всех загрузок.
  • Все загрузки потока управления — включить меры по смягчению уязвимости Spectre для загрузок потока управления.
  • Отключено — не задано.

Устранение рисков Spectre

Смягчение последствий Spectre для CVE 2017-5753. Наборы /Qspectre.

Варианты выбора

  • Включено - Включить меры защиты от Spectre для CVE 2017-5753.
  • Отключено — не задано.

Включить исправление ошибки Intel JCC

Программное смягчение влияния на производительность, вызванного обновлением микрокода для исправления ошибки Intel JCC. Наборы /QIntel-jcc-erratum.

Включение метаданных продолжения EH

Создает отсортированный список всех допустимых целевых объектов обработки исключений для двоичного файла, используемого во время выполнения проверки RIP. Сейчас доступно для сборок x64. Наборы /guard:ehcont.

Включение подписанных возвратов

Включает подписанные возвраты, которые помогают обнаруживать и предотвращать попытки отправки в незаконные блоки из возвращаемой функции. В настоящее время доступно для сборок ARM64. Наборы /guard:signret.

Свойства языка C/C++

Отключение расширений языка

Отключает или включает расширения языка. Наборы /Za.

Обрабатывать WChar_t как встроенный тип

При включении этого свойства тип wchar_t становится встроенным типом, который сопоставляется с short таким же образом, как __wchar_t сопоставляется с __int16. /Zc:wchar_t включен по умолчанию.

Принудительное соответствие в области цикла

Реализует стандартное поведение C++ для for циклов инструкций с расширениями Майкрософт. Наборы /Za, /Ze (Отключить языковые расширения. /Zc:forScope включен по умолчанию.

Удаление нессылаемых кода и данных

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

принудительное применение правил преобразования типов

Используется для идентификации ссылочного типа rvalue в результате операции приведения в соответствии со стандартом C++11.

Включить информацию о типах времени выполнения

Добавляет код для проверки типов объектов C++ во время выполнения (сведения о типах среды выполнения или RTTI). Наборы /GR, /GR-.

Поддержка OpenMP

Включает расширения языка OpenMP 2.0. Наборы /openmp.

Стандарт языка C++

Определяет стандарт языка C++, который применяет компилятор. Параметр по умолчанию не является стандартным, поэтому компилятор использует свое значение по умолчанию C++14. Если выбрать определенное значение, будет задан соответствующий /std параметр компилятора.

Варианты выбора

  • По умолчанию (стандарт ISO C++14)
  • СТАНДАРТ ISO C++14 (/std:c++14)
  • СТАНДАРТ ISO C++17 (/std:c++17)
  • ISO C++20 Standard (/std:c++20)
  • Предварительная версия — СТАНДАРТ ISO C++23 (/std:c++23preview)
  • Предварительная версия — компоненты из последнего рабочего черновика C++ (/std:c++latest)

Стандарт языка C

Определяет стандарт языка C, который применяет компилятор. Значение по умолчанию не задает стандартный параметр, поэтому компилятор использует устаревшую настройку MSVC по умолчанию. Если выбрать определенное значение, будет задан соответствующий /std параметр компилятора.

Варианты выбора

  • По умолчанию (устаревшая версия MSVC)
  • Стандарт ISO C11 (/std:c11)
  • Стандарт ISO C17 (2018) (/std:c17)
  • Предварительная версия — функции из последнего рабочего черновика C (/std:clatest)

Режим соответствия

Включает или подавляет режим соответствия. Наборы /permissive-.

Включение экспериментальных модулей стандартной библиотеки C++

Экспериментальная поддержка модулей C++ TS и стандартных библиотек.

Создание модулей стандартной библиотеки ISO C++23

Начиная с Visual Studio 17.6, если это свойство включено, а для стандартного языка C++ задано /std:c++latestзначение , проекты Microsoft C++ автоматически находят и создают модули стандартной библиотеки ISO C++23. Это позволяет вам использовать import std или import std.compat в коде C++.

Свойства предкомпилированных заголовков C/C++

Предкомпилированный заголовок

Создание и использование предварительно скомпилированного заголовка

Разрешает создание или использование предварительно скомпилированного заголовка во время сборки. Наборы /Yc, /Yu.

Варианты выбора

  • Create — указывает компилятору создать предварительно скомпилированный файл заголовка (.pch) с состоянием компиляции в определенной точке.
  • Использование — указывает компилятору использовать существующий предварительно скомпилированный файл заголовка (.pch) в текущей компиляции.
  • Не используется предварительно скомпилированные заголовки . Не используется предварительно скомпилированные заголовки.

Файл предкомпилированных заголовков

Указывает имя файла заголовка, который компилятор использует для создания или доступа к предварительно скомпилированному заголовку. Наборы /Yc, /Yu.

Готовый выходной файл заголовка

Указывает путь или имя созданного предварительно скомпилированного файла заголовка. Наборы /Fp.

Свойства выходных файлов C/C++

Развернуть приписываемый источник

Создает файл перечисления с расширенными атрибутами, внедренными в исходный файл. Наборы /Fx.

Вывод ассемблера

Указывает содержимое выходного файла языка сборки. Наборы /FA, /FAc, /FAs, /FAcs.

Варианты выбора

  • Нет в списке. Нет в списке.
  • Только ассемблерный листинг — код на языке ассемблера: .asm
  • Сборка с машинным кодом — машинный код и код сборки: .cod
  • Сборка с исходным кодом — исходный код и код сборки: .asm
  • Сборка, машинный код и источник — сборка, код компьютера и исходный код: .cod

Использование Юникода для листинга ассемблера

Вызывает создание выходного файла в формате UTF-8.

Расположение списка ASM

Указывает относительный путь или имя файла листинга ASM. Может быть именем файла или каталога. Наборы /Fa.

Имя выходного файла модуля

Расположение файла вывода модуля или блока заголовка (BMI). Может быть именем файла или каталога. Наборы /ifcOutput[name].

Имя файла зависимостей модуля

Указывает путь и (или) имя созданного файла зависимостей модуля. Наборы /scanDependencies[path].

Имя объектного файла

Определяет имя, переопределяющее имя объектного файла по умолчанию. Может быть именем файла или каталога. Наборы /Fo.

Имя файла базы данных программы

Задает имя файла PDB, созданного компилятором. Также указывает базовое имя для требуемого файла IDB, созданного компилятором. Может быть именем файла или каталога. Наборы /Fd.

Создание XML-файлов документации

Указывает, что компилятор должен создавать xml-файлы комментариев документации (). XDC). Наборы /doc.

Имя файла XML-документации

Указывает имя созданных XML-файлов документации. Может быть именем файла или каталога. Задает /doc:<имя>.

Создание файла зависимостей источника

Создает JSON-файл со списком всех файлов компилятором, используемым для компиляции источника. Наборы /sourceDependencies.

Имя файла зависимостей источника

Указывает путь и (или) имя созданного файла зависимостей источника. Наборы /sourceDependencies[path].

Свойства обзора сведений на C/C++

Включение информации о просмотре

Указывает, должен ли компилятор создать .bsc файл. Наборы /FR.

Просмотр файла информации

Указывает необязательное имя файла сведений браузера. Задает /FR<имя>.

Внешние элементы C/C++ включают свойства

Обрабатывать файлы, включенные в угловые скобки, как внешние

Указывает, следует ли обрабатывать файлы, включенные в угловые скобки как внешние. Задайте для этого свойства значение "Да" , чтобы задать параметр компилятора /external:anglebrackets .

Уровень предупреждения внешнего заголовка

Выберите, насколько строго компилятор должен следить за ошибками в программе во внешних заголовках. Это свойство задает параметр компилятора /external:Wn . Если для этого параметра установлено "Наследовать уровень предупреждения проекта" или значение по умолчанию, другие /external настройки игнорируются.

Диагностика шаблонов во внешних заголовках

Указывает, следует ли оценивать уровень предупреждений в цепочке инстанциаций шаблона. Задайте для этого свойства значение "Да" , чтобы задать параметр компилятора /external:templates- .

Отключение анализа кода для внешних заголовков

Отключает анализ кода для внешних заголовков. Задает параметр компилятора /analyze:external- .

Набор правил анализа для внешних заголовков

Задает переопределение набора правил анализа кода для внешних заголовков. Если это свойство не указано, используется параметр Code Analysis. Задает параметр компилятора /analyze:external:ruleset path .

Дополнительные свойства C/C++

Соглашение о вызовах

Выберите соглашение о вызовах по умолчанию для вашего приложения (можно переопределить для каждой функции). Наборы /Gd, /Gr, /Gz, /Gv.

Варианты выбора

  • __cdecl — задает соглашение о вызове __cdecl для всех функций, кроме функций-членов И функций C++, помеченных __stdcall или __fastcall.
  • __fastcall — задает соглашение о вызове __fastcall для всех функций, кроме функций-членов И функций C++, помеченных __cdecl или __stdcall. Все функции __fastcall должны иметь прототипы.
  • __stdcall — задает соглашение о вызове __stdcall для всех функций, кроме функций-членов И функций C++, помеченных __cdecl или __fastcall. Все функции __stdcall должны иметь прототипы.
  • __vectorcall — задает соглашение о вызове __vectorcall для всех функций, кроме функций-членов И функций C++, помеченных __cdecl, __fastcallили __stdcall. Все функции __vectorcall должны иметь прототипы.

Компилировать как

Выберите параметр языка компиляции для исходных файлов. Задает/TC, /TP/interface, /internalPartitionили /exportHeader параметры.

Варианты выбора

  • По умолчанию — по умолчанию.
  • Компиляция как код C (/TC) — компиляция указанных исходных файлов в виде кода C. По умолчанию файлы с расширением .c компилируются как C.
  • Компиляция как код C++ (/TP) — компиляция указанных исходных файлов в виде кода C++. По умолчанию все исходные файлы, которые не имеют расширения .c, .ixx, .cppm или .h либо вообще не имеют расширения, компилируются как C++.
  • Компилируйте как код модуля C++ (/interface) — компилируйте указанные исходные файлы в виде кода модуля C++. По умолчанию файлы с расширением .ixx.cppm компилируются как код модуля C++.
  • Компилируйте как внутренний раздел модуля C++ (/internalPartition) — компилируйте указанный исходный файл как внутренний раздел модуля C++.
  • Компиляция как единица заголовка C++ (/exportHeader) — компиляция указанных исходных файлов в виде единицы заголовка C++. По умолчанию файлы с расширением .h или без расширения компилируются как единицы заголовков.

Отключение определенных предупреждений

Отключите указанные номера предупреждений. Поместите числа предупреждений в список с разделителями с запятой. Задает /wd<число>.

Принудительное включение файла

Указывает один или несколько принудительно включенных файлов. Задает /FI<имя>.

Принудительное использование файла

Указывает один или несколько принудительных #using файлов. Задает /FU<имя>.

Показывать включаемые файлы

Создает список включаемых файлов с выводом компилятора. Наборы /showIncludes.

Использование полных путей

Используйте полные пути в диагностических сообщениях. Наборы /FC.

Опущено имя библиотеки по умолчанию

Указывает, чтобы опустить имена библиотек по умолчанию в .obj файлах. Наборы /Zl.

Отчеты о внутренних ошибках компилятора

Примечание.

Этот параметр является устаревшим. Начиная с Windows Vista, отчеты об ошибках управляются параметрами Windows Error Reporting (WER).

Обрабатывать определенные предупреждения как ошибки

Обрабатывает конкретное предупреждение компилятора как ошибку, где n является предупреждением компилятора.

Дополнительные параметры

Дополнительные параметры