Поделиться через


C6504

Предупреждение C6504: недопустимая аннотация. Указатель можно использовать только для значений типа указателя, указателя на член и массива.

Это предупреждение указывает на использование свойства с несовместимым типом данных. Дополнительные сведения о типах данных, поддерживаемых свойствами, см. в разделе Свойства заметок.

Пример

В следующем коде возникает это предупреждение, поскольку свойство Null нельзя использовать с типом данных char. Причина заключается в том, что 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, поскольку в результате конфликта свойств возникла неверная аннотация.