Compartir a través de


C6522

Advertencia C6522: Especificación de tamaño no válida: la expresión debe ser de tipo entero

[!NOTA]

La advertencia sólo aparece en el código que está utilizando una versión desusada del lenguaje de anotación de código fuente (SAL).Se recomienda migrar el código para usar la última versión de SAL.Para obtener más información, vea Utilizar anotaciones SAL para reducir defectos de código de C/C++.

Esta advertencia indica que se esperaba un tipo entero, pero se utilizó un tipo de datos incorrecto.Puede utilizar propiedades de anotación que aceptan el tamaño de un parámetro en términos de otro parámetro, pero debe utilizar el tipo de datos correcto.Para obtener una lista de las propiedades de anotación, vea Propiedades de anotación.

Ejemplo

El código siguiente genera esta advertencia:

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

Para corregir esta advertencia, utilice size_t para el tipo de datos del parámetro ValidBytesParam, como se muestra en el código de ejemplo siguiente:

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