globale variablen in statischen bibliotheken
-
wenn man mehrere statische libs zusammenlinkt dürfen ja keine variablennamen gleich sein
nun sind bei mir aber mehrere gleich(ein paar exzessiv genutzte zeiger auf structs) und die plattform unterstützt auch keine dynamischen libs
was habt ihr für c++ vorschläge, um den namenskonfikt mit möglichst wenig aufwand loszuwerden (umbenennen einer der variablen is die allerletzte option)
-
namespace ?
-
wie isses da wenn zwei namespaces ne variable mit gleichem namen haben und beide mit using eingebunden werden?
-
namespaces machen keinen sinn wenn man sie einfach alle komplett einbindet (oder wie auch immer man das nennen mag).
Aber probiers doch einfach mal aus, vieleicht langt es wenn du in konfliktfällen den namespace direkt angibst.
-
dann muss ich aber jede zeile ändern in der der pointer verwendet wird... kommt ner namensänderung gleich
gibts keine praktischere lösung?
-
namespace N { int i; } namespace M { int i; } void foo () { using namespace M; using namespace N; i = 10; //Fehler: mehrdeutig } void bar () { using M::i; using N::i; //Fehler: doppelte Deklaration }
So geht's nicht. Allerdings hast du die Möglichkeit, namespaces in jeder Funktion zu einzeln zu öffnen, bzw. einzelne Namen herauszuholen (ist dann wie eine Deklaration)
Sowas geht zBusing namespace A; void fubar () { using B::i; i = 10; }
umgekehrt (Direktive in der Funktion, Deklaration außerhalb) allerdings nicht.
Namespaces bieten dir auf jedenfall mehr Flexibilität, als Prefixe oder was dir sonst noch für Namensänderungen einfallen.