C6516

警告 C6516:无效的批注: 没有为 <name> 特性指定属性

说明说明

此警告在使用源代码注释语言的代码仅发生(SAL)的一个弃用的版本。建议您端口您的代码使用SAL的最新版本。有关更多信息,请参见 使用 SAL 批注以减少 C/C++ 代码缺陷

此警告意味着没有在特性中指定任何属性,或者指定的属性无效;因此无法将该特性视为完整。

示例

在下面的代码中,由于 Deref=1 仅指定间接寻址级别,因此会生成此警告,不过分析工具不能单单凭借此信息来获取帮助:

// C
#include <CodeAnalysis\SourceAnnotations.h>
void f([SA_Pre(Deref=1)] char* pc);

// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
void f([Pre(Deref=1)] char* pc);

若要更正此警告,需要通过诸如 Access 这样的其他属性来通知分析工具必须对已取消引用的项强制执行的操作。下面的代码更正此警告:

// C
#include <CodeAnalysis\SourceAnnotations.h>
void f([SA_Pre(Deref=1, Access=SA_Read)] char* pc); 

// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
void f([Pre(Deref=1, Access=Read)] char* pc);