C6522
C6522 de aviso: especificação de tamanho inválido: a expressão deve ser do tipo integral
Observação |
---|
Esse erro ocorre somente o código que está usando uma versão substituído de linguagem de anotação de código-fonte (SAL).Recomendamos que você mova seu código para usar a versão mais recente de SAL.Para obter mais informações, consulte Usando o SAL anotações para reduzir os defeitos no código C/C++. |
Este aviso indica que um tipo integral esteve esperado, mas um tipo de dados incorreto foi usado.Você pode usar as propriedades de anotação que aceitam o tamanho de um parâmetro em termos de outro parâmetro, mas você deve usar o tipo de dados correto.Para obter uma lista de propriedades de anotação, consulte Propriedades da anotação.
Exemplo
O código a seguir gera esse aviso:
// 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 corrigir este aviso, use size_t para o tipo de dados do parâmetro de ValidBytesParam , conforme mostrado no código de exemplo a seguir:
// 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);