Partilhar via


C6260

Aviso C6260: sizeof * sizeof quase sempre está errado, você pretendia usar uma contagem de caracteres ou uma contagem de bytes?

Este aviso indica que os resultados de dois sizeof as operações foram multiplicadas juntos.O C/C++ sizeof o operador retorna o número de bytes de armazenamento em um objeto usa.É geralmente incorreto multiplique-o por outro sizeof operação; Geralmente, um está interessado em número de bytes em um objeto ou o número de elementos de uma matriz (por exemplo, o número de caracteres de largura de uma matriz).

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

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 código a seguir:

#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

Operador sizeof

sizeof operador (C)