Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Globale Variablen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
03.05.2006, 11:34 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Naja unter einer Lib verstehe ich eine .dll oder.a oder .lib und keine Header Datei. Deswegen das Misverständnis
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
03.05.2006, 12:07 Uhr
RHBaum



Ups, ok auch mein Fehler ... ich bin mehr in der Windowswelt zu hause und ein MS Knecht (leider).

Also Lib = .lib = statische Library fuer poese MS compiler
ne .dll iss halt ne Dll

Sorry fuer die konfuse Begriffsyntax ... aber man muss ja auch kompatibel zu den kollegen bleiben ^^

Ciao ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
03.05.2006, 15:43 Uhr
0xdeadbeef
Gott
(Operator)


Also, das böse an globalen Variablen ist folgendes: Keine Threadsicherheit.

Gerade, wenn man eine Bibliothek entwickelt, von der man nicht weiß, wofür sie nachher benutzt werden soll, ist das - aus ziemlich offensichtlichen Gründen - von entscheidender Bedeutung. Nichts spricht gegen globale Konstanten, aber bei globalen Variablen bekommt man Synchronisationsprobleme und muss dementsprechend recht umständlich mutexen, was wieder Laufzeit kostet.

In aller Regel sollte man sein Programm deshalb so designen, dass die Frage nach globalen Variablen sich überhaupt nicht stellt. Lässt es sich nicht vermeiden, handelt es sich mit 99,9%iger Wahrscheinlichkeit (mir fällt gerade kein Fall ein, in dem es nicht so ist) um die Abstraktion einer tatsächlich globalen Ressource, z.B. eines Laufwerkes, und da kommt man ums mutexen eh nicht herum. Ist es in der Designphase einfach nicht bedacht worden, muss man sich mit mehr oder weniger ekligen hacks helfen und den ganzen Kram beizeiten von Grund auf neu schreiben - ich hege den Verdacht, dass es sich in diesem Fall um ein solches Problem handelt. Die wohl gängigste Methode - weil am einfachsten zu implementieren - ist wohl, die globalen Variablen in einem struct zu deklarieren und allen Funktionen einen Parameter des Typs struct global_vars * an die Parameterliste anzuhängen, in dem dann ein pointer auf ein vorher befülltes struct übergeben wird. Allerdings - dreckig ist das schon.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
03.05.2006, 17:05 Uhr
RHBaum




Zitat:

Also, das böse an globalen Variablen ist folgendes: Keine Threadsicherheit.


Seiteneffekte sind auch nen Thema, klar, das soll aber Singlethreadprogrammierer nicht zu unbedachten verhalten fuehren ^^
Und selbst in ner Multithreadumgebung kann man nen globale variable mutexen ... sie bleibt schmutz ^^
Also denk ich ned das es der wesentlichste Grund ist ....


Zitat:

(mir fällt gerade kein Fall ein, in dem es nicht so ist)


Seine Dll ist das Beispiel ...
Um die schnittstellen nicht zum Monster aufzublaehen, und um kompliziertere Erzeugungsfunktionen aus der exe zu bekommen, muessen in ner Dll variablen existieren, die ueber mehrere unterschiedliche funktionsaufrufe gueltig sind.
Man hat bei ner Dll keine zentrale main funktion, die alle benoetigte Variablen in ihrem context halten kann ... sondern die dllmain wird nur kurz angesprungen ....
Wie woelltest du solche variablen anders anlegen als ueber quasi globale ? Wie gesagt immer nen komplettes enviroment bei den funktionsaufrufen durchzuschleifen ist nicht praktikabel ....

Bei dingen die ne zentrale main funktion ueber den lebenszyklus haben, geb ich dir recht ... da tun mir die parameter auchned weh ^^

Ciao ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: