C++, sal.h的初见
一路挖UE的Memcpy,不小心挖到了这个头文件 sal.h 。
成片的宏张牙舞爪,就像你应声开门以为是肯德基结果是佛伯乐的骇然
sal是什么呢?
https://learn.microsoft.com/en-us/cpp/code-quality/understanding-sal?view=msvc-170
全称是 Microsoft source-code annotation language (SAL) 直译过来大概是 “微软代码注释语言”。
又是微软的神奇妙妙工具,翻看文档,有以下几句话。
Visual Studio code analysis for C++ uses SAL annotations to modify its analysis of functions.
SAL is an inexpensive way to let the compiler check your code for you.
vs的c++代码分析会使用代码中的sal注释来修改函数分析。
sal允许编译器低开销地检查代码。
sal如何工作?
因为我不准备客制化这个妙妙工具,观察一下它的使用办法就足够了。
注意以下代码的区别
_In_的影响之一
后者会在“代码检查”后,跳出一个警告 C6387 。
这是因为后者的InCallee函数的签名的参数部分int*之前,有个_In_宏,这个是sal注释的一种。
如果我们去sal的微软文档看一眼,
就会发现_In_的一大堆影响中,有一条是“对应参数必须有效”。
_In_注释指出了哪些条目。其中第一点,该参数必须有效且不可修改
感谢阅读,敬请斧正