ich habe jetzt eine weile mit bcc32 rumgespielt.
dein "extern" sollte nichtmal notwendig sein.
versuch mal ein "extern const prog_char[] VERSION;"
und "some_func() {...}" VERSION sollte ja global bekannt sein.
gruesse
Ich habe in main.c die Konstante "VERSION" deklariert und möchte auf diese in der eingebundenen Datei terminal.c zugreifen. Die Konstante wird in terminal.c per Vorwärtsdeklaration bekannt gemacht.
Ich bekomme keinen Compilerfehler aber "VERSION" scheint nur in main.c gültig zu sein - in terminal.c ist sie NULL.
Kennt sich jemand mit dem Gültigkeitsbereich von Variablen aus und kann mir hier weiterhelfen?
main.c:
terminal.c:Code:#include <avr/pgmspace.h> #include "terminal.h" const prog_char[] VERSION = "version 0.1"; ...
Code:#include <avr/pgmspace.h> #include "terminal.h" // forward declaration extern const prog_char* VERSION; ... some_func(VERSION);
Die Bekanntmachung (Deklaration mit extern) sollte in einem Headergeschehen. Und zwar im Header zur C-Quelle, in der das Ding angelegt wird.
foo.c: const char * ...
foo.h: extern const char * ...
main.c: #include "foo.h"
das gilt genauso für Funktionen
Disclaimer: none. Sue me.
Die Deklaration (im Header) von "extern const prog_char* VERSION" auf "extern const prog_char[] VERSION" zu ändern hat das Problem gelöst.
Vielen Dank!
Lesezeichen