C6504
警告 C6504:无效的批注: 属性只能用于指针值、指向成员的指针值或数组类型值
此警告意味着对不兼容的数据类型使用了属性。 有关属性所支持的数据类型的更多信息,请参见 批注属性。
示例
在下面的代码中,因为不能对 char 数据类型使用 Null 属性,所以会生成此警告。 其原因在于,Deref=1 是指字符,而不是指字符的指针:
// C
#include <CodeAnalysis\SourceAnnotations.h>
void f([SA_Pre(Deref=1, Null=SA_Yes)] char* pc);
// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
void f([Pre(Deref=1, Null=Yes)] char* pc);
若要更此警告,请移除 Deref=1,如下面的代码示例所示:
// C
#include <CodeAnalysis\SourceAnnotations.h>
void f([SA_Pre(Null=SA_Yes)] char* pc);
// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
void f([Pre(Null=Yes)] char *pc);
在前面显示的缺陷代码中,因为属性冲突导致了无效的批注,所以也会生成警告 C6516。