内部函数

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()

另请参阅