In C kann die Situation „Array der Länge Null“ in Legacy-Code auftreten. Hierbei handelt es sich um Strukturen, die Arrays mit der Länge Null enthalten. Während die Warnungen durch Pragma unterdrückt werden, kann das Erstellen neuer Strukturen, die solche Arrays enthalten, den Fehler 2233 verursachen. Warum tritt dies auf und was kann getan werden, um es zu beheben?
Der Grund für die Verwendung von Arrays mit der Länge Null ist historischer Natur C-Hack, der die dynamische Zuweisung von Arrays ermöglicht. Anstatt ein Array der Länge 1 oder einen Zeiger zu verwenden, würden Entwickler eine Struktur mit einem Array der Länge Null erstellen. Dies würde es ihnen ermöglichen, die Größe des Arrays dynamisch mithilfe des nData-Mitglieds der Struktur zu berechnen.
Um dieses Problem zu beheben, kann ein C-Hack eingesetzt werden. Die Funktion mallocSomeData kann erstellt werden, um ein Array einer angegebenen Länge dynamisch zuzuweisen:
struct someData* mallocSomeData(int size) { struct someData* result = (struct someData*)malloc(sizeof(struct someData) size * sizeof(BYTE)); if (result) { result->nData = size; } return result; }
Mit dieser Funktion können Sie ein Objekt von someData mit einem Array der gewünschten Länge erstellen und so das Problem „Array mit der Länge Null“ effektiv lösen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3