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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren