Hi sagen wir ich habe einen Pointer mit int16_t MyArray[100]; int16_t * MyPointer &= MyArray[100]; wie kann ich in Watch window (variable watch window nicht memory) von Iar die nächsten 10 Werte anzeigen lassen? Das geht beides nicht MyPointer[1:10] MyPointer[0],10 Weiss wer bescheid?
Lies doch bitte erstmal ein C-Buch. Du hast keine Ahnung was du da tust. Das Anzeigen von Werten ist dein kleinstes Problem...
Bei üblichen IDEs lässt sich durch rechtsklick o.ä. das Anzeigeformaz einer Variablen einstellen. Aber eine IDE, die sinnlosen C-Code repariert, gibt es leider noch nicht. Oliver
Kaj schrieb: > Lies doch bitte erstmal ein C-Buch. Der oft gutgemeinte Ratschlag ist hier völlig verfehlt. Hier geht es nicht um das Programmieren in C, sondern um das /Bedienen eines Debuggers/.
1 | In windows where you can edit the Expression field, you can specify |
2 | the number of elements to be displayed in the field by adding a |
3 | semicolon followed by an integer. |
4 | For example, to display only the three first elements of an array |
5 | named myArray, or three elements in sequence starting with the |
6 | element pointed to by a pointer, write: |
7 | |
8 | myArray;3 |
9 | |
10 | Optionally, add a comma and another integer that specifies which |
11 | element to start with. For example, to display elements 10–14, write: |
12 | |
13 | myArray;5,10 |
(Quelle: http://supp.iar.com/FilesPublic/UPDINFO/007040/arm/doc/EWARM_DebuggingGuide.ENU.pdf, Seite 69)
Vielen dank, genau das meinte ich MyPointer;5,10
Rufus Τ. F. schrieb: > Hier geht es > nicht um das Programmieren in C, sondern um das /Bedienen eines > Debuggers/. Bevor ich mir aber Code im Debugger angucken kann, sollte ich mir erstmal darueber im klaren sein, was der Code ueberhaupt macht. Und wenn ich mir diesen Code anschaue:
1 | int16_t MyArray[100]; |
2 | int16_t * MyPointer &= MyArray[100]; |
Bevor ich was debuggen kann, brauch ich was, das auch nur im entferntesten funktioniert. Und das ist bei diesem Code im leben nicht der Fall... Das compiliert bei mir nicht mal (GCC 6.2.1)
1 | expected »=«, »,«, »;«, »asm« or »__attribute__« before »&=« token |
2 | int16_t * MyPointer &= MyArray[100]; |
Wuerde mich schwer wundern, wenn der IAR-Compiler das einfach so frisst. Der Hinweis, dass es hier um die Bedienung eines Debuggers geht ist ja nett, aber das Problem des TO ist ein ganz anderes... Selbst wenn das &= in dem Codeschnippsel auch nur im entferntesten das richtige tun wuerde, waere das Ergebnis (vermutlich) noch immer nicht das gewuenschte. Mir faellt zumindestens spontan kein Grund ein, warum man einen Pointer auf ein Element hinter das Array setzen sollte um sich dann da n Elementen anschauen zu wollen... aber okay, jeder wie er mag.
H. R. schrieb: > int16_t * MyPointer &= MyArray[100]; Na, vermutlich meint er int16_t *MyPointer = &MyArray[0]; alternativ sollte auch int16_t *MyPointer = MyArray; gehen.
Da die gezeigte Zeile aber so weit weg von der Lösung ist, ist 2⁵ schrieb: > vermutlich doch ein C-Buch hilfreich. Oliver
Kaj schrieb: > Selbst wenn das &= in dem Codeschnippsel auch nur im entferntesten das > richtige tun wuerde, waere das Ergebnis (vermutlich) noch immer > nicht das gewünschte. Meine Güte, stell dich doch nicht so blöd an! Der OT hat da einen Vertipper gemacht. Er hat eine Frage zu seinem Debugger und zum Verständnis zwei Zeilen Code gepostet (ja, in dem zwei Zeichen vertauscht sind!!!). > Mir faellt zumindestens spontan kein Grund ein, warum man einen Pointer > auf ein Element hinter das Array setzen sollte um sich dann da n > Elementen anschauen zu wollen... aber okay, jeder wie er mag. Ein Zeiger auf das erste und eine Zeiger hinter das letzte Element eines Bereichs ist eine durchaus übliche Notation für Bereiche (halb offenes Interval). Und wenn der Bereich sehr groß ist und man sich in dem Moment nur für das Ende interessiert, dann guckt man halt von hinten drauf. Hier noch die Lösung für den GDB ;-)
1 | p/x *(MyPointer-10)@10 |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.