内部函数
SAL 中的表达式可以是 C/C++ 表达式,前提是它是没有副作用的表达式。例如,++、-- 以及函数调用在此上下文中都有副作用。 但是,SAL 确实提供了一些类似函数的对象和一些可以在 SAL 表达式中使用的保留符号。 这些被称为内联函数。
常规用途
以下内在函数注释为 SAL 提供了一般实用程序。
注释 | 说明 |
---|---|
_Curr_ |
当前正在注释的对象的同义词。 使用 _At_ 注释时,_Curr_ 与 _At_ 的第一个参数相同。 否则,它是与注释词法上关联的参数或整个函数/返回值。 |
_Inexpressible_(expr) |
表示缓冲区大小过于复杂而无法使用注释表达式表示的情况 - 例如,当通过扫描输入数据集然后计算选定成员来计算缓冲区大小时。 |
_Nullterm_length_(param) |
param 是缓冲区中最多但不包括 null 终止符的元素数。 它可以应用于任何非聚合、非空类型的缓冲区。 |
_Old_(expr) |
根据前置条件下对其进行计算时,_Old_ 返回输入值 expr 。 根据后置条件中对其进行计算时,返回值 expr ,与根据前置条件进行计算一样。 |
_Param_(n) |
函数的第 n 个参数,从 1 计数到 n ,并且 n 是文本整数常量。 如果参数已命名,则此注解与按名称访问参数相同。 注意:n 可能指的是由省略号定义的位置参数,也可能用于未使用名称的函数原型中。 |
return |
C/C++ 保留关键字 return 可用于 SAL 表达式中以指示函数的返回值。 此值仅在后置状态下可用;在前置状态下使用此值是一个语法错误。 |
特定于字符串
以下内部函数注释支持对字符串的操作。 这四个函数都有相同的目的:返回在 null 终止符之前找到的类型元素数。 不同之处在于所引用元素中的数据类型。 请注意,如果要指定不由字符组成的以空字符结尾的缓冲区的长度,请使用上一节中的 _Nullterm_length_(param)
注释。
注释 | 说明 |
---|---|
_String_length_(param) |
param 是字符串中最多但不包括 null 终止符的元素数。 此注释是为字符串类型保留的。 |
strlen(param) |
param 是字符串中最多但不包括 null 终止符的元素数。 此注释保留用于字符数组,类似于 C 运行时函数 strlen()。 |
wcslen(param) |
param 是字符串中最多(但不包括 null 终止符)的元素数。 此注释保留用于宽字符数组,类似于 C 运行时函数 wcslen()。 |