www.mikrocontroller.net

Forum: Compiler & IDEs Pointer / Array


Autor: Benjamin Klimmek (benjaminklimmek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich stehe gerade vor einem kleinen Problem, aber ich hoffe ja das Ihr 
mir mal wieder eine Hilfestellung geben könnt.

Ich habe mir einen Quellcode angesehen und bin der Meinung das in diesem 
Quellcode ein BUG sitzt. Aber Vielleicht belehrt Ihr mich ja eines 
besseren.

Also jemand hat das so geschrieben:
rom char* ASCII1 = {0x00 , 0x00 , 0x00 , 0x00 , 0x00,  // space // 32  - 43
        0x00 , 0x06 , 0x5F , 0x06 , 0x00,       // !
        0x07 , 0x03 , 0x00 , 0x07 , 0x03,       // ''
        0x24 , 0x7E , 0x24 , 0x7E , 0x24,       // #
        0x24 , 0x2B , 0x6A , 0x12 , 0x00,       // $
        0x63 , 0x13 , 0x08 , 0x64 , 0x63,       // %
        0x36 , 0x49 , 0x56 , 0x20 , 0x50,       // &
        0x00 , 0x07 , 0x03 , 0x00 , 0x00,       // '
                     0x00 , 0x3E , 0x41 , 0x00 , 0x00,       // (
        0x00 , 0x41 , 0x3E , 0x00 , 0x00,       // )
              0x08 , 0x3E , 0x1C , 0x3E , 0x08,       // *
        0x08 , 0x08 , 0x3E , 0x08 , 0x08};      // +

Ich bin der Meinung das ich keinen Pointer direkt auf ein Array legen 
kann. Vielleicht habe ich ja unrecht, aber dann erklärt mir doch mal 
bitte wieso der Programmierer dort nicht die Feldgröße definiert hat und 
wie der Pointer weiß das er das Ende erreicht hat!?

Ich habe den Pionter mal Probehalber von AVRstudio kompilieren lassen 
und tausende Fehlermeldungen bekommen!? Stehe gerade auf dem 
Schlauch.... Ich meine klar den Befehl "rom" habe ich weggelassen... den 
kennt der compiler nicht, aber den Rest müsste er doch kennen!

Danke schon mal vorab!!

Gruß
Benjamin

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benjamin Klimmek wrote:

> Ich bin der Meinung das ich keinen Pointer direkt auf ein Array legen
> kann. Vielleicht habe ich ja unrecht, aber dann erklärt mir doch mal
> bitte wieso der Programmierer dort nicht die Feldgröße definiert hat und
> wie der Pointer weiß das er das Ende erreicht hat!?
>

Weil der Compiler viel zuverlässiger und fehlerfreier die
Anzahl der Initialisierungen abzählen kann, als es der Programmierer
macht.

> Ich meine klar den Befehl "rom"

Ich schätze mal, dass genau dieses "rom" den Unterschied ausmacht.
Bei solchen Sachen gibt es immer irgendwelche compilerspezifischen
Erweiterungen.

Im WinAvr müsste es, wie du richtig vermutest mit einem
Array und PROGMEM realisiert werden.

http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.