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


Встроенные функции

Выражение в SAL может быть выражением C/C++ при условии, что выражение не имеет побочных эффектов, например, ++, -- и все вызовы функций имеют побочные эффекты в этом контексте. Однако SAL предоставляет некоторые объекты, такие как функции, и некоторые зарезервированные символы, которые можно использовать в выражениях SAL. Они называются встроенными функциями.

Общего назначения

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

Номер Description
_Curr_ Синоним для объекта, который в данный момент аннотируется. Если в данный момент используется примечание _At_, то _Curr_ является такой же, как первый параметр в _At_. В противном случае она является параметром или всей функцией/возвращаемым значением, с которым лексически связано примечание.
_Inexpressible_(expr) Выражает ситуацию, когда размер буфера слишком сложен для представления с использованием выражения примечания, например, когда оно вычисляется с помощью просмотра входного набора данных и последующего подсчета выбранных членов.
_Nullterm_length_(param) param — это количество элементов в буфере до, но не включая конечный элемент NULL. Он может применяться к любому буферу нерегларегированного типа, непустого типа.
_Old_(expr) Когда оно вычисляется в предварительном условии, _Old_ возвращает входное значение expr. Когда оно вычисляется в постусловии, оно возвращает значение expr, как будто оно вычислялось в предусловии.
_Param_(n) Параметр nth для функции, подсчет от 1 до nи n является литеральной целой константой. Если параметр называется, эта заметка идентична доступу к параметру по имени. Примечание. n Может ссылаться на позиционные параметры, определенные многоточием, или может использоваться в прототипах функций, где имена не используются.
return Зарезервированное ключевое слово return C/C++ можно использовать в выражении SAL, чтобы указать возвращаемое значение функции. Значение доступно только в состоянии отправки; при использовании в предварительном состоянии вызывается синтаксическая ошибка.

Конкретный строковый тип

Следующие примечания встроенной функции дают возможность управлять строками. Все четыре функции служат для осуществления одной цели: возвращать количество элементов типа, найденного перед заключительным знаком null. Различными являются те типы данных в элементах, на которые ссылаются. Обратите внимание, что если требуется указать длину буфера, завершающегося нуль-символом, который не состоит из символов, используйте заметку _Nullterm_length_(param) из предыдущего раздела.

Номер Description
_String_length_(param) param — это количество элементов в строке до, но не включая конечный элемент NULL. Эта заметка зарезервирована для типов строковых символов.
strlen(param) param — это количество элементов в строке до, но не включая конечный элемент NULL. Эта заметка зарезервирована для использования в массивах символов и напоминает функцию среды выполнения C strlen().
wcslen(param) param — это число элементов в строке до (но не включая) конца null. Эта заметка зарезервирована для использования в широких массивах символов и напоминает функцию среды выполнения C wcslen().

См. также