globale Variablen auch ohne const??
-
Hallo!
Ich bin noch zienlicher C-Neuling und schreibe gerade ein Programm, bei dem ich meherere Methoden verwende. Deshalb bräuchte ich auch ein paar globale Variabeln, aber sie müssten veränderbar sein.
Vielen Dank schon im voraus
-
Hat die Fehlermeldung vielleicht damit zu tun, dass ich ein globales, veränderbares 3-dimensionales Array definiert habe?????
-
Welche Fehlermeldung O_o
Du hast bis jetzt nicht eine brauchbare Information gepostet.
Wir brauchen den Code und die Fehlermeldung.
-
Vielleicht hilft Dir das Schlüsselwort 'extern' weiter.
Mfg, Lord Kefir
-
Du mußt die Variable in genau einer Übersetzungseinheit definieren, sonst gibt es Probleme mit deinem Linker (meintest du das mit Fehler?). Wenn du sie in mehreren Quelldateien benötigst, deklarierst du sie als "extern" im Header:
//var.h: //reine Deklaration, gibt nur Name und Typ an: extern int my_var[1000]; //var.c: #include "var.h" //Definition, legt Speicher für die Variable an: int my_var[1000]; //main.c: #include "var.h" //keine Definition -> der Linker findet die richtige Definition zur extern-Deklaration
-
Ähm, ich weiß eigentlich noch gar nicht, wie man ein Programm in verschiedene Files schreibt; hier mein Code (etwas verkürzt weil er schon zeimlich lang ist):
//hier stehen ein paar include-Anweisungen und die Methodennamen const int x=DatenEinlesen("Länge",124,10); const int y=DatenEinlesen("Breite",38,5); const int startpunktX=(124-x)/2; const int startpunktY=(38-y)/2; int info[x][y][3]; const int lebzeitFisch=DatenEinlesen("Zeit, wie lange ein Fisch leben soll",100,1); int anzahlFisch=DatenEinlesen("Anzahl der Fische",5000,5); const int lebzeitHai=DatenEinlesen("Zeit, wie lange ein Hai leben soll",100,1); const int fastzeitHai=DatenEinlesen("Zeit,wie lange ein Hai ohne Nahrung überleben kann",100,1); int anzahlHai=DatenEinlesen("Anzahl der Haie",1000,3); main(){ //Rest des Programmes
und zu dem Array kommt folgende Fehlermeldung:
fisch.c:26: Fehler: Typ mit variabler Größe wurde außerhalb einer Funktion definiert
fisch.c:26: Fehler: Typ mit variabler Größe wurde außerhalb einer Funktion definiert
-
Du kannst Arrays mit vorgegebenen Größen nur anlegen wenn die Größen während des Kompilierens schon bekannt sind. X und y werden aber zur Laufzeit berechnet (gelesen).
Die Fehlermeldung sagt mir dass das innerhalb einer Funktion gehen würde, aber selbst das wäre eine Erweiterung des Compilers und kein Standard-C.
-
LordJaxom schrieb:
Die Fehlermeldung sagt mir dass das innerhalb einer Funktion gehen würde, aber selbst das wäre eine Erweiterung des Compilers und kein Standard-C.
Mööööööop. Ist Standard C99. Nennt sich VLA (Variable Length Array). Aber ja, manche Compiler hatten es davor schon als Erweiterung. Ein Beispiel wäre der gcc.
@angela:
Funktionen ausserhalb von main()?
-
Wieder was dazugelernt
Kannte es bisher nur als Nonstandard-Extension des gcc..
-
Natürlich hab ich Funktionen außerhalb von main() in denen ich info[x][y][3] bräuchte, aber kann ich das irgendwie anders auch schreiben, sodass ich keine Fehlermeldung bekomm???
-
Ja, mach's innerhalb von main()
-
aber wie kann ich info[x][y][3] dann in den anderen Funktionen verwenden???
-
Wenn du info als Parameter übergibst.
-
Ah ja, stimmt, hatte ganz vergessen, dass ich das machen könnte