Partilhar via


C6260

Aviso C6260: sizeof * sizeof quase sempre está errada, você pretendia usar um número de caractere ou uma contagem de byte?

Este aviso indica que os resultados de duas sizeof operações têm sido multiplicadas juntos. O do C/C ++sizeof operador retorna o número de bytes de armazenamento que usa um objeto. É geralmente incorreto multiplique-o por outro sizeof operação; normalmente está interessada em número de bytes em um objeto ou o número de elementos em uma matriz (por exemplo, o número de caracteres de toda uma matriz).

Há algum comportamento não intuitivos associado sizeof operador. Por exemplo, em C, a sizeof ('\0') == 4, porque é um caractere de tipo integral. No C++, o tipo de um caractere literal é char, portanto, sizeof ('\0') == 1. No entanto, em C e C++, os itens a seguir são verdadeiros:

sizeof ("\0") == 2. 

Exemplo

O código a seguir gera este aviso:

#include <windows.h>

void f( )
{
  int i;
  i = sizeof (L"String") * sizeof (WCHAR);
  // code ...
}

Para corrigir esse aviso, use o seguinte código:

#include <windows.h>

void f( )
{
  int i;
  i= sizeof (L"String") / sizeof (WCHAR);
  
  /* or to get bytes */
  i = sizeof (L"String");
  // code ...
}

Consulte também

Referência

sizeof Operador

The sizeof Operador