Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Meandor

Frischling

  • »Meandor« ist der Autor dieses Themas

Beiträge: 55

Wohnort: Oberhausen

Beruf: Student

  • Private Nachricht senden

1

21.04.2005, 14:46

extern

Ich habe folgendes Compiler Problem:

ich habe eine globale Stuktur und eine globale Variable definiert:
in der cpp Datei wo ich diese definiert habe kann ich diese beiden Variablen ansprechen.

zusätzlich habe ich eine Funktion deklariert die auf diese globale Variable
und globale Struktur zugreifen sollen. Bei der Variablen funktioniert das indem ich extern int zaehler vor die cpp Datei schreibe wieso funktioniert das nicht auch mit der Struktur?? Was mache ich da falsch? (Ich weiß das man mit Klassen das vielleicht besser machen kann - aber ich brauche halt Globale Strukturen die von anderen cpp Dateien aufgerufen werden können und dort auch verändert werden können.

Ich lege einfach mal den Quellcode dazu:
/////////////////////////////////////////////////////////
///DAS HAUPTPROGRAMM DATEI: Haupt.cpp//////
#include "Neben2.h"
using namespace std;

////GLOBALE VARIABLE UND STRUCTUR//////
struct S_Unten
{
int x;
int y;
string NR;
};
S_Unten Tisch[300];
int zaehler_Tisch=0;

int main()
{
Tisch[0].NR="Text 0777";
cout <<Tisch[0].NR<<endl;
Einlagerungsdaten_einlesen(); //Funtionsaufruf
cout <<zaehler_Tisch<<endl;
return 0;
}
////////////////////////////////////////// jetzt die Header Datei!!!!////
//Datei: Neben2.h
////Neben2.h//////soll einfach mit eingebunden werden////
///////HEADER DIE EINGEBUNDEN WERDEN MÜSSEN//////
#include <iostream>
#include <string>
#include <stdio.h>
#include <sys/timeb.h>
#include <windows.h>
using namespace std;

void Einlagerungsdaten_einlesen(void);//FUNKTIONPROTOTYP

///////////////////////////////////////////jetzt die andere cpp Datei die
////// Struktur Tisch und int zaehler_Tisch lesen soll.
///DATEI: NEBEN2.cpp/////
extern int zaehler_Tisch;
extern Tisch;// wie soll ich die Struktur extern einbinden???

#include "Neben2.h"
using namespace std;

void Einlagerungsdaten_einlesen(void)
{
cout <<"bin in Neben2"<<endl;
cout <<zaehler_Tisch<<endl;
zaehler_Tisch=12;
cout <<Tisch[0].NR<<endl;
}
////////ENDE von der cpp Datei so und jetzt mäckert nur der Compiler!

was mache ich falsch?? Hat einer eine Idee? Ich brauche das unbedingt so das die Funktion auf die globale Struktur zugreifen kann.

Jens

2

21.04.2005, 15:15

Hoffentlich verstehe ich dich richtig.
Dein Hauptproblem ist, dass du die Struktur S_Unten Tisch[300] in deine anderen Codedateien einbinden willst.

C-/C++-Quelltext

1
2
extern int zaehler_Tisch; 
extern Tisch;// wie soll ich die Struktur extern einbinden??? 


Dann wäre das - glaube ich - ein Lösungsvorschlag:

C-/C++-Quelltext

1
extern S_Unten Tisch;


Wenn du das schon bei extern int zaehler_Tisch richtig machst (extern [VARIBALENTYP] [VARIABLENNAME]), warum nicht auch bei der Struktur?

Kurz: Du hast das S_Unten vergessen (bitte vor Tisch).


Ich hoffe, ich habe hier jetzt keinen kompletten M*st erzählt...

FOGX

Meandor

Frischling

  • »Meandor« ist der Autor dieses Themas

Beiträge: 55

Wohnort: Oberhausen

Beruf: Student

  • Private Nachricht senden

3

21.04.2005, 15:44

klappt so nicht!

Also ich das klappt nicht! Wenn ich

extern S_Unten Tisch;

in die Neben2.cpp Datei einbinde! Mein Compiler mäckert mit den Worten dann
//////////////////////////////
Neben2.cpp(3) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'Tisch'
Neben2.cpp(3) : fatal error C1004: Unerwartetes Dateiende gefunden
////////////////////////////////
was mache ich falsch? wie bekomme ich die Globale Struktur S_Unten Tisch[300]; in eine andere Dateien mit eingebunden? Um sie dort zu verändern?
Hat da einer eine Ahnung?

4

21.04.2005, 17:12

natüerlich nicht. kann ja gar nicht weil S_Unten nicht deklariert ist
innerhalb Neben2.cpp

mach mal folgendes.

bau ein neues file
Unten.h oder so und steck die deklaration von S_Unten darein.
und dann inkludierst du dieses file in deinen 2 cpp-modulen.
dann sollte es gehn

Meandor

Frischling

  • »Meandor« ist der Autor dieses Themas

Beiträge: 55

Wohnort: Oberhausen

Beruf: Student

  • Private Nachricht senden

5

22.04.2005, 10:19

Ich hab`s

Danke erstmal!
SO damit jetzt auch die Welt weiß wie das jetzt genau läuft
Schreibe ich das noch mal genau auf was ich gemacht habe:

Man muss nämlich sagen dass das in dem Buch von Heiko ein bisschen anders erklärt wird und es deswegen auch zu Problemen kommt:

1. Man definiert sich eine neue Header Datei wo die Struktur definiert ist

2. Diese bindet man in alle entsprechenden cpp Dateien mit ein die auf die globale Struktur zugreifen wollen bzw. diese verändern wollen.

3. in der Haup cpp Datei wird nun die Struktur als global also ausserhalb der main() definiert zB.: S_Unten Tisch[300];

4. in der Neben cpp Datei werden jetzt erstmal alle include Header mit eingebunden.

5. Nach den Includes werden nun die globalen Variablen bzw Strukturen als extern deklariert.
also extern S_Unten Tisch[300];

//////Hier lag genau mein Fehler im Buch von Heiko steht es so, dass alle externen Variablen vor den includes kommen, dass ist aber nicht der Fall, weil sonst immer der Compiler mäckert und die Struktur ja noch nicht kennt, was ja auch logisch ist. Das war zumindest mein Fehler, ich hoffe ich aber hiermit der Nachwelt geholfen, die ähnliche Probleme haben!
Bei mir klappt es nun zumindest!

Danke noch mal an 23h bist echt ein töffte Kerl!

Anonymous

unregistriert

6

25.04.2005, 14:26

OK, ich hab kompletten M*st erzählt, sorry...

Werbeanzeige