Встроенные функции
Выражение в 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) |
Параметр n th для функции, подсчет от 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(). |
См. также
- Использование аннотаций SAL для уменьшения количества дефектов в коде C/C++
- Основные сведения о языке SAL
- Создание примечаний к параметрам и возвращаемым значениям функций
- Аннотация поведения функций
- Аннотация структур и классов
- Аннотация поведения блокировки
- Указание времени и места применения примечания
- Рекомендации и примеры