Visual Studio中 _Use_decl_annotations_ 宏的作用

本文阅读 2 分钟
首页 应用开发 正文

Visual Studio中有很多这样的宏,叫做批注函数行为。比如In, Out 等等。这些宏归根结底都是一些空的宏定义,以便在提供一些关于函数以及参数的描述的同时,又不影响其他不支持这些批注信息的编译器编译。VS提供了一套完整的批注系统,就是SAL(source-code annotation language)。这些批注的作用基本上有两个:一是方便程序员理解函数或参数的作用,二是帮助静态代码分析工具检查代码正确性。具体到 _Use_declannotations 这个批注,主要是用来简化函数定义中批注的书写。比如说某个函数的声明里,带有很多函数批注,函数又有五六个参数,每个参数又有批注。那么在写函数的定义时,要再写一遍这么多批注有点多余,还容易出错。这时候就可以在函数定义的开头用这个_Use_declannotations 批注,表明函数声明里的所有批注在定义里都生效。一句话解释就是“引用声明里的批注”。比如,函数声明为:
_IRQL_always_functionmin(DISPATCH_LEVEL)
_IRQLrequires(DISPATCH_LEVEL)
typedef NTSTATUS FUNCTYPE(
In ULONG a,
In ULONG b,
InOut PULONGLONG c);
那么定义时只要
FUNCTYPE Func;

_Use_decl_annotations_
NTSTATUS Func(
    ULONG a,
    ULONG b,
    PULONGLONG c)
{
...
}

参考链接:https://docs.microsoft.com/zh-cn/cpp/code-quality/annotating-function-behavior?view=msvc-170&viewFallbackFrom=vs-2015

本文来自投稿,不代表本站立场,如若转载,请注明出处:
C/C++数据长度转换
« 上一篇 04-03
Intel VT学习笔记(一) 基础知识
下一篇 » 09-08