Externes PROGMEM-Array

OP #1930502
Lesenswert?
• ▲
▼
Hallo,

ich habe eine große Tabelle, die ich in eine externe .C-Datei auslagern 
möchte. Diese ist zu groß für den SRAM, muss also per PROGMEM-Attribut 
im Flash abgelegt werden.

tables.c:
1
unsigned char SINE[50][128] PROGMEM = { {...}, {...}, ... };

tables.h:
1
extern unsigned char SINE[50][128] PROGMEM;

Obiger Code produziert leider folgende Fehlermeldung:
1
tables.h:9: Fehler: expected »=«, »,«, »;«, »asm« or »__attribute__« before »PROGMEM«
2
tables.c:21: Fehler: expected »=«, »,«, »;«, »asm« or »__attribute__« before »PROGMEM«

(Entferne ich die beiden Attribute PROGMEM, so kompiliert der Code 
einwandfrei...aber damit kann ich natürlich nichts anfangen.)

Was muss ich ändern, damit der Code kompiliert?

Gruß,
Paul.
OP #1930523
Lesenswert?
• ▲
▼
Ich sag doch, es kompiliert fehlerfrei, wenn ich PROGMEM weglasse.

Wenn ich den Inhalt aus tables.c komplett in meine main.c kopiere und 
den Inhalt der tables.h auskommentiere, so kompiliert es auch fehlerfrei 
(mit PROGMEM).

Die main.c greift auf das Array per pgm_read_byte() zu, mehr nicht.

Es geht nur darum, das Array SINE in die externe Datei tables.c 
auszulagern.
Und das geht bei mir bislang nur mit Arrays ohne PROGMEM-Attribut. Ich 
möchte es aber mit PROGMEM. Jemand eine Idee?
#1930528
Lesenswert?
• ▲
▼
Die oben gezeigte Fehlermeldung entsteht exakt dann, wenn PROGMEM nicht 
definiert ist. PROGMEM wird im Include-File als Präprozessor-Makro 
definiert und wenn der Parser wie oben in der Fehlermeldung erkennbar 
diesen Namen sieht, dann kann es an dieser Stelle kein Makro sein.

Da kannst du jetzt zigmal beteuern, das sei nicht so. Überzeugender wäre 
der Quellcode eines Testbeispiels, in dem das Problem auftritt.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.