Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Kommastellen und position festlegen

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
24.09.2008, 22:30 Uhr
0xdeadbeef
Gott
(Operator)


Grundsätzlich ist das Problem mit using-Direktiven, dass du dir nicht nur die Symbole, die du haben willst, sondern u.U. auch einen Haufen nicht näher spezifizierter Implementationsdetails in den globalen Namensraum holst. Wenn darunter eins ist, das genau so heißt wie eins deiner eigenen Symbole, fliegt dir das um die Ohren - und die Implementationsdetails sind von Plattform zu Plattform verschieden.

Das bedeutet, sobald du "using namespace" in deinem Code stehen hast, kannst du dich im Grunde nicht mehr darauf verlassen, dass er auch überall kompiliert. In der Praxis sind solche Kollisionen relativ selten, was wohl auch der Grund dafür ist, dass viele C++-Bücher gleich am Anfang diese Unsitte verbreiten. Grundsätzlich ist es aber deswegen besser, Namensräume auszuschreiben, oder im Fall besonders langer Namensräume mindestens ein namespace-Alias zu definieren, zum Beispiel

C++:
namespace fs = boost::filesystem;

// ...

fs::path p("/foo/bar");


Wenn schon using-Direktiven, dann höchstens einzeln für die Symbole, die du haben willst - z.B.

C++:
using std::cout;


...und beides möglichst lokal begrenzt, a la

C++:
int main() {
  namespace fs = boost::filesystem;
  using std::cout;

  // ...
}


Und auf gar keinen Fall sollte man diese Dinge in Headern verwenden, wo sie sich dann auf einbindende Übersetzungseinheiten übertrügen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (WinAPI, Konsole) ]  


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: