.| Autor | Beitrag |
|---|---|
|
000 03.02.2001, 16:42 RocketCoder |
Ich bin immer noch am RundenSystem. *hehe*
cu |
|
Profil || Suche |
|
001 03.02.2001, 18:06 DBug |
Ich bin zwar noch C++ Newbie, aber ich glaube das geht wie folgt: -In eine beliebige Datei z.B. int Var1 schreiben
...oda so :)... wie gesagt, noch c++ newbie cYa -- |
|
Profil || Suche |
|
002 03.02.2001, 18:18 RocketCoder |
meinst du jetzt 1.cpp int var1...include bsp.h
cu |
|
Profil || Suche |
|
003 03.02.2001, 18:20 DBug |
Ich glaube :) bin mir aber nicht sicher... -- |
|
Profil || Suche |
|
004 03.02.2001, 19:33 Kriz |
DBug hat recht. Das funzt aber nur bei globalen Variablen! --K:R-I)Z++ |
|
Profil || Suche |
|
005 03.02.2001, 19:44 Blacky|SfP |
Wie willst du Var in verschieden Dlls benutzen oder nur in verschieden Cpp dateien? -- |
|
Profil || Suche |
|
006 05.02.2001, 11:23 RocketCoder |
nur in verscheidenen .cpp (sind alle in der mp.dll)
cu |
|
Profil || Suche |
|
007 05.02.2001, 12:25 DBug |
Im Unterschied zu lokalen Variablen sind globale Variablen in der gesamten Datei
|
|
Profil || Suche |
|
008 05.02.2001, 14:05 Buy-Menu-Man |
So hallo........
sondern halt einfach in der Datei! cu
|
|
Profil || Suche |
|
009 05.02.2001, 16:58 Blacky|SfP |
LOL
|
|
Profil || Suche |
|
010 05.02.2001, 17:09 Hellfire |
deshalb heisst's ja auch [c=#FF0000]keineGlobaleVariable[/c] . Das Beispiel sollte nur zeigen, wie man es nicht machen soll... -- |
|
Profil || Suche |
|
011 05.02.2001, 18:09 Funstar |
geh mal auf http://coding.thewall.de/index.php?inc=modfaq. MFG Funstar
The Matrix has you... -- |
|
Profil || Suche |
|
012 05.02.2001, 19:50 Buy-Menu-Man |
Ahm..........ich glaub das blickt wohl jeder, was ich mit meinem Beispiel gemeint hab, oder? -- |
|
Profil || Suche |
|
013 05.02.2001, 20:56 Hellfire |
ich versteh auch net so ganz, was dadran unverständlich ist... (gut, ich hab ein paar c++ Grundkenntnisse). -- |
|
Profil || Suche |
|
014 06.02.2001, 13:23 Kriz |
@Buy-Menu-Man: Dann sind sie aber immernoch in einem gewissen Sinne lokal, denn eine globale Variable in dat1.cpp ist nicht in dat2.cpp bis datX.cpp sichtbar und gültig! In diesen Dateien muß man die globale Variable aus dat1.cpp per Schlüsselwort extern auch in der betreffenden Datei erstmal gültig und sichtbar machen. Das was Du gemeint hast, schimpft sich salopp gesagt: Lokal-globale Variable. Das Wort habe ich gerade mal erfunden... @Hellfire: Och, da gibt's ne Menge Zeug, was nur die Profis wissen können, weil's in den ganzen Anfänger- und Fortgeschrittenen-Büchern zu C++ nicht drinsteht. Schon mal was von Smart-Zeigern gehört? *ggg* @RocketCoder: Kleines Beispiel: // Datei dat1.cpp int Global; // Global nur in dat1.cpp global gültig und sichtbar // Datei dat2.cpp extern int Global; // Global ist jetzt auch in dat2.cpp global gültig und sichtbar --K:R-I)Z++ |
|
Profil || Suche |
|
015 06.02.2001, 13:25 apfelkorn |
hehe... jetzt sind nur die gefoppt, die keine Peilung von c haben. Nicht mein Problem! Erst C lernen, dann SDK "coden" und nícht nur modifizieren! -- |
|
Profil || Suche |
|
016 06.02.2001, 13:32 Hellfire |
[2.edit]
|
|
Profil || Suche |
|
017 06.02.2001, 13:44 RocketCoder |
@Kriz: Muss also doch keine .h included werden ? --cu |
|
Profil || Suche |
|
018 06.02.2001, 15:44 Kriz |
Das mit den Headerdateien bezieht sich ja nur auf die ursprüngliche Trennung von Deklaration und Definiton. Also ich progge das immer so (auf Klassen bezogen): Jede Klasse bekommt seine eigene Headerdatei und seine eigene Quellcodedatei (beide haben denselben Dateinamen). Globale Definitionen von Datentypen, Makros, Aufzählungen und Strukturen/Unionen bekommen eine eigene Headerdatei (meist OHNE ein dazugehörige Quellcodedatei). Da ich aber grundsätzlich so gut wie niemals mit globalen Variablen arbeite (das ist verpönt in C++), linkt der Binder von VC++ 6.0 durch geschicktes Includen alle Dateien zusammen, so daß im eigentlichen Hauptquellcode (dort wo main() drin steht) alles implementiert ist, was die Hauptfunktion benötigt. Im Prinzip wird extern heute nur noch mit den C-Runtime-Librarys verwendet, also wenn man in seinem C++ Code explizit C verwenden will. Der Compiler wechselt dann während dem Kompilieren zwischen C++ Runtime und C Runtime hin und her. Solche Dinge erkennt man an folgendem Codeblöcken: extern "C"
Durch geschickten Einsatz von Basisklassen läßt sich der Einsatz von globalen Variabeln in C++ fast komplett vermeiden. Cu --K:R-I)Z++ |
|
Profil || Suche |
|
019 06.02.2001, 19:29 Buy-Menu-Man |
Also das heißt, dass man normalerweiße nicht extern verwenden sollte, sondern wie dann?????
Also wenn du für jede Klasse ne eigene Datei+Header machst müsste es ja in HL hunderte von cpp und header-dateien geben.......die typen von Valve haben das anders gemacht..... Oh Mann.......wann hast du denn dein Tutorial fertig.....dass dir auch ein normal Sterblicher folgen kann???? cu
|
|
Profil || Suche |
|
020 06.02.2001, 22:42 Another1 |
Die von Valve hatten ja auch keine Ahnung von kontrollierter Programmierung ... mhh immer ihre HACK!HACK! und !UNDONE! dinger *g* --Another1 ...relaxing..atm =) |
|
Profil || Suche |
|
021 06.02.2001, 22:52 apfelkorn |
// HACK!HACK! Aaaalso: Wenn man jetzt in einem Kaufsystem das ganze machen will und man arbeitet mit Klassen, kann man natürlich sich den Pointer auf eine Klasse holen (CKlasse *pKlasse;) und dann auf die Member-Variable damit zugreifen (pKlasse->MemberVariable) auch aus anderen Dateien raus. Andernfalls (ich denke mal so wird es sein) kannst du in der cpp-datei eine neue nicht-Member-Variable einrichten und den Wert innerhalb der Datei ändern, und aus anderen Dateien mit "extern float/int/char/wasauchimmer Variablenname;" Die Variable in der anderen Datei zugänglich machen. Im Einzelfall mag es vielleicht noch okay sein, aber lass dir das bloss nicht zur Angewihnheit werden! ;) Und wie gesagt: Erst C lernen, dann Half-Life "coden" (und ein Buy-Menu ist für mich mehr als nur modifizieren von vorhandem Code)! -- |
|
Profil || Suche |
|
022 07.02.2001, 12:40 Prefect |
Hmm.. eigentlich würde ich ja static-Variablen als lokal-global bezeichnen. Eine mit static int foo; deklarierte Variable wird _nicht_ in die globale Symboltabelle eingetragen. D.h. du kannst noch so viele externs in andere Sourcefiles einbauen, do kommst an die Variable nicht ran. Wenn static nicht angegeben wird, werden alle globalen Variablen und Funktionen in die globale Symboltabelle mit aufgenommen. Wenn du versuchst, eine Variable in zwei Sourcefiles mit int foo; zu deklarieren, wird sich der Linker entsprechend über doppelt vorkommende Symbole aufregen. cu,
Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
023 07.02.2001, 17:49 apfelkorn |
jepp... -- |
|
Profil || Suche |

