"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi un tableau de longueur nulle en C++ provoque-t-il l'erreur 2233 et comment puis-je la corriger ?

Pourquoi un tableau de longueur nulle en C++ provoque-t-il l'erreur 2233 et comment puis-je la corriger ?

Publié le 2024-12-21
Parcourir:542

Why Does a Zero-Length Array in C   Cause Error 2233, and How Can I Fix It?

Gestion du "tableau de longueur nulle" en C

En C , la situation du "tableau de longueur nulle" peut être rencontrée dans le code existant. Cela implique des structures contenant des tableaux d’une longueur nulle. Bien que les avertissements soient supprimés par pragma, la création de nouvelles structures contenant de tels tableaux peut provoquer l'erreur 2233. Pourquoi cela se produit-il et que peut-on faire pour le résoudre ?

La raison de l'utilisation de tableaux de longueur nulle est une raison historique Hack C qui permet l'allocation dynamique de tableaux. Au lieu d'utiliser un tableau de longueur 1 ou un pointeur, les développeurs créeraient une structure avec un tableau de longueur nulle. Cela leur permettrait de calculer dynamiquement la taille du tableau en utilisant le membre nData de la structure.

Pour résoudre ce problème, un C-Hack peut être utilisé. La fonction mallocSomeData peut être créée pour allouer dynamiquement un tableau d'une longueur spécifiée :

struct someData* mallocSomeData(int size)
{
    struct someData*  result = (struct someData*)malloc(sizeof(struct someData)   size * sizeof(BYTE));
    if (result)
    {    result->nData = size;
    }
    return result;
}

En utilisant cette fonction, vous pouvez créer un objet de someData avec un tableau de la longueur souhaitée, résolvant ainsi le problème du "tableau de longueur nulle".

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3