Texte in const char * initialisieren und benutzen

Gast #3596248
Lesenswert?
• ▲
▼
Es geht um Konstanten im Programm-Speicher unter Atmel Studio 6.1, uC 
ist ein Atxmega.

Ich nutze zum Ausgeben von vordefinierten Texten auf eine UART 
normalweise eine Kontruktion wie

PGM_P text_eingabe="Eingabe : ";

wobei
#define PGM_P const char *
definiert ist.

Klappt prima, solange ich das direkt ins c-File schreibe und auch nur in 
diesem Modul benutze.

Ich möchte das aber gern in den Header schreiben und von überall da 
zugreifen, wo der Header eingebunden wird. Leider bekomme ich dann 
sofort Fehlermeldungen wie

Error  147  Disabling relaxation: it will not work with multiple 
definitions    1  1  USER_APPLICATION2

und

Error  146  first defined here  C:\Users\...\Debug\src\applic.o  1  1 
USER_APPLICATION2

Wie macht man es richtig?
Gast #3596255
Lesenswert?
• ▲
▼
PGM_P text_eingabe="Eingabe : "; in die .c
extern PGM_P text_eingabe; in die .h

Zuweisungen sollten immer in .c Dateien erfolgen und wenn sie in anderen 
Dateien nötig sind per extern darauf verweisen. Der Verweis kann in 
einer .h oder in der .c stehen.

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.