PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen Gültigkeitsbereich



dtmuller
28.10.2006, 15:51
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:


#include <avr/pgmspace.h>
#include "terminal.h"

const prog_char[] VERSION = "version 0.1";

...


terminal.c:


#include <avr/pgmspace.h>
#include "terminal.h"

// forward declaration
extern const prog_char* VERSION;

...

some_func(VERSION);

robocat
28.10.2006, 20:07
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

SprinterSB
28.10.2006, 23:42
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

dtmuller
29.10.2006, 10:38
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!