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