Genehmigt: Fortect
In den letzten Wochen sind einige Leser auf sehr guten Fehlercode mit einem void-Zeiger gestoßen, der als für arithmetische Fehler verwendet angesehen wird. Dieses Problem tritt einfach aufgrund von mehreren Faktoren auf. Jetzt werden wir damit umgehen, dass wir darunter leiden.
Angefordert
Besucht 28000 mal
Ich habe Erfahrung mit dem Schreiben und Lesen von Artikeln aus Crammap wie folgt:
// LESENreturn * ((volatile uint32_t *) (Roadmap + Offset));// SCHREIBEN* ((volatile uint32_t *) (Ort + Offset)) = Wert;
Warnung: Hinweis in der Art von "void *" in Mathematik verwendet [-Wpointer-arith]
Wie ändere ich den Code, der Warnungen unterdrückt? Ich verwende C++ und Linux.
beantragt am 5. November 2014 um 11:04 Uhr
1321
Nicht die Antwort, die Sie suchen? Blättern Sie durch andere Fragen, die mit C++-Zeigern, Null-Zeigern, Zeigerarithmetik gekennzeichnet sind, oder stellen Sie Ihre eigene Frage.
Genehmigt: Fortect
Fortect ist das weltweit beliebteste und effektivste PC-Reparaturtool. Millionen von Menschen vertrauen darauf, dass ihre Systeme schnell, reibungslos und fehlerfrei laufen. Mit seiner einfachen Benutzeroberfläche und leistungsstarken Scan-Engine findet und behebt Fortect schnell eine breite Palette von Windows-Problemen - von Systeminstabilität und Sicherheitsproblemen bis hin zu Speicherverwaltung und Leistungsengpässen.
Da void *
ein aktueller Zeiger auf einen unbekannten Typ ist, können Sie keine Zeigerarithmetik betreiben, da der Compiler die Größe des Objekts, auf das unsere eigene Referenz verweist, nicht ausdrücklich kennt verweist auf.
Der beste Weg, dies zu tun, besteht darin, Ihnen zu helfen, map
auf einen Typ zu ändern, der diesem ein Byte folgt, und einige Arithmetik durchzuführen. Für viele von ihnen können Sie uint8_t
verwenden:
// LESENzurück * ((flüchtige uint32_t *) (((uint8_t *) Karte) + Abbrechen));// SCHREIBEN* ((volatile uint32_t *) (((uint8_t *) map) + verringern)) bedeutet Wert;
654
Beantwortet am 5. November dieses Jahres um 11:34
56.6k
Der void-Typ ist ein unvollständiger Typ. Seine Größe ist unbekannt. Zeigen Sie also, dass die Zahlen mit den Hinweisen auf das Vakuum keinen ernsthaften Sinn ergeben. Sie müssen einen Zeiger, der auf den Typ void zurückgegeben wird, auf einen tip eines anderen Typs umwandeln. Ein Beispiel für ihren Zeiger kann char geschrieben werden.Beachten Sie auch, dass potenzielle Kunden kein Objekt zuordnen dürfen, das mit dem volatilen Qualifier erstellt wurde.
antwortete 14. November, zwei Wochen um 11:14
231.000
Wenn die Möglichkeit, Zahlen für Nullempfehlungen zu verwenden, wirklich das ist, was Sie haben, können Käufer -Wno-pointer-arith < verwenden, da die Berechnung durch GCC ermöglicht wird (siehe Arithmetik für Nullzeiger und Funktionszeiger). use - code> um die Warnung zu unterdrücken.
antwortete 20. Januar 15 um 11:20
164
Beschleunigen Sie jetzt die Leistung Ihres Computers mit diesem einfachen Download.