C6522
avviso C6522: specifica di dimensione non valida: l'espressione deve essere di tipo integrale
[!NOTA]
Questo avviso viene visualizzato solo in codici che utilizzano una versione deprecata del linguaggio di annotazione del codice sorgente (SAL).È consigliabile trasferite il codice per utilizzare la versione più recente di SAL.Per ulteriori informazioni, vedere Utilizzo delle annotazioni SAL per ridurre gli errori del codice C/C++.
L'avviso indica che era previsto un tipo integrale ma è stato utilizzato un tipo di dati non corretto.È possibile utilizzare le proprietà di annotazione che accettano la dimensione di un parametro come se fosse un altro parametro, ma è necessario utilizzare il tipo di dati corretto.Per un elenco di proprietà di annotazione, vedere Proprietà di annotazione.
Esempio
Il codice seguente genera questo avviso:
// C
#include <CodeAnalysis\SourceAnnotations.h>
void f ([SA_Pre(ValidBytes="c")] char *pc, double c);
// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
void f ([Pre(ValidBytes="c")] char *pc, double c);
Per risolvere il problema, utilizzare size_t per il tipo di dati del parametro ValidBytesParam, come illustrato nell'esempio di codice seguente:
// C
#include <CodeAnalysis\SourceAnnotations.h>
void f ([SA_Pre(ValidBytes="c")] char *pc, size_t c);
// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
void f ([Pre(ValidBytes="c")] char *pc, size_t c);