C6521
avviso C6521: specifica di dimensione non valida: l'operatore * può essere applicato solo a tipi di puntatore
L'avviso indica un utilizzo non corretto dell'operatore * in una proprietà di annotazione che accetta la dimensione di un parametro come un altro parametro. L'avviso viene generato se il parametro di dimensione è un tipo non puntatore e per rimuovere il riferimento a tale parametro viene utilizzato un operatore *. Tuttavia, se il parametro di dimensione viene passato come tipo puntatore, è possibile utilizzare l'operatore *.
Esempio
Il codice seguente genera questo avviso:
// C
#include <CodeAnalysis\SourceAnnotations.h>
void f ([SA_Pre(WritableElements="*c")] char *pc, size_t c);
// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
void f ([Pre(WritableElements="*c")] char *pc, size_t c);
Per risolvere il problema, eliminare l'operatore * dal valore della proprietà WritableElements oppure passare un puntatore a size_t. Nel codice seguente viene utilizzato size_t *c:
// C
#include <CodeAnalysis\SourceAnnotations.h>
void f ([SA_Pre(WritableElements="*c")] char *pc, size_t *c);
// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
void f ([Pre(WritableElements="*c")] char *pc, size_t *c);