Значение __in, __out, __in_opt - PullRequest
       0

Значение __in, __out, __in_opt

6 голосов
/ 23 марта 2012

Что означают эти ключевые слова, используемые перед переменными в параметрах функции?

  • __in
  • __out
  • __in_opt

Ответы [ 2 ]

10 голосов
/ 23 марта 2012

Это некоторые из старых макросов оформления из аннотаций SAL от Microsoft ( более новые теперь следуют другому регистру, начиная с заглавной).Они не оказывают реального влияния на компиляцию (в VS 2010 они даже не раскрываются), они есть для встроенной документации API.

  1. __in: этот параметр является входом для функции (читайте-только инициализирован вызывающим абонентом).
  2. __out: этот параметр содержит выходные данные функции при возврате (только для записи, инициализирован вызывающим абонентом).
  3. __in_opt: сформирована составная аннотацияиз _in и _opt, _opt указывает на то, что параметр является необязательным и может быть установлен в значение по умолчанию (обычно NULL).

Вы можете получить полное объяснение здесьстарые украшения здесь .

4 голосов
/ 05 июля 2017

Как ответил Nercolis, это атрибуты аннотации SAL. Однако это не просто внутренний или просто документация API . Настоящая цель - Анализ кода . Когда вы строите проект с опцией компилятора / analysis (Свойства проекта, Анализ кода -> Общие), они играют важную роль в поиске проблем кодирования.

Например, если конкретный аргумент-указатель говорит __in, ему нельзя передавать нулевой указатель. Функция не будет проверять на ноль и может вызвать SEH. __in_opt аргумент может быть нулевым. Когда компилятор обнаруживает какую-либо проблему, он сообщает об этом как предупреждение. См. эту статью .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...