Em C , a situação de "matriz de comprimento zero" pode ser encontrada no código legado. Isso envolve estruturas contendo matrizes com comprimento zero. Embora os avisos sejam suprimidos pelo pragma, a criação de novas estruturas contendo tais matrizes pode causar o erro 2233. Por que isso está ocorrendo e o que pode ser feito para resolvê-lo?
O motivo para usar matrizes de comprimento zero é um histórico Hack C que permite a alocação dinâmica de arrays. Em vez de usar um array de comprimento 1 ou um ponteiro, os desenvolvedores criariam uma estrutura com um array de comprimento zero. Isso permitiria que eles calculassem o tamanho do array dinamicamente usando o membro nData da estrutura.
Para corrigir esse problema, um C-Hack pode ser empregado. A função mallocSomeData pode ser criada para alocar dinamicamente um array de comprimento especificado:
struct someData* mallocSomeData(int size) { struct someData* result = (struct someData*)malloc(sizeof(struct someData) size * sizeof(BYTE)); if (result) { result->nData = size; } return result; }
Ao usar esta função, você pode criar um objeto de someData com uma matriz do comprimento desejado, resolvendo efetivamente o problema da "matriz de comprimento zero".
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3