Einführung in die using-Direktive in C++ im Rahmen der Lehre des Programmierens mit der Programmiersprache C++. (), Lektion, Seite 721122
https://www.purl.org/stefan_ram/pub/c++_using_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C++-Kurs

using -Deklarationen und using -Direktiven in C++ 

using -Deklaration

Wenn ein lokaler Name ausschließlich in der Bedeutung aus einem bestimmten Namensraum verwendet werden soll, dann kann er durch eine using -Deklaration „importiert“ werden. Schreibt man das Schlüsselwort "using" gefolgt von dem qualifizieren Namen und einem Semikolon ";", so kann danach der unqualifizierte Name anstelle des qualifizierten Namens verwendet werden.

Das Beispiel des folgenden Programmes zeigt dies für den Namen »cout«, der nach der using -Deklaration »using ::std::cout;« anstelle des explizierten Namens »::std::cout« verwendet werden kann.

main.cpp

#include <iostream> // ::std::cout
#include <ostream> // <<
#include <string> // "s

using namespace ::std::literals;

using ::std::cout;

int main(){ cout << 65 << "\n"s; }

::std::cout
65

using -Direktive

Es wäre bei einem größeren Programm aufwendig, die zuletzt beschriebene Deklaration für alle zu verwendenden qualifizierten Namen hinzuschreiben. Statt dessen ist es auch möglich, alle  Namen eines Namensraumes für die unqualifizierte Verwendung freizugeben.

Hierzu wird eine using-Direktive  verwendet, bei der nach »using namespace « der Name eines Namensraumes angegeben wird und dann ein Semikolon folgt. Dadurch werden alle lokalen Namen des Namensraumes zur unqualifizierten Benutzung freigegeben.

main.cpp

#include <iostream> // ::std::cout
#include <ostream> // <<
#include <string> // "s

using namespace ::std::literals;

using namespace ::std;

int main(){ cout << 65 << "\n"s; }

::std::cout
65

Nachteile von using -Direktiven

Durch die using-Direktive wird die Trennung in Namensräume aufgehoben und der Nutzen von Namensräumen wird somit sabotiert.

Dies kann zu Problemen führen, wenn ein Programmierer in seinem Programm selber einen Namen definiert, der schon in einem der Namensräume vorkommt, welche mit der using-Direktive importiert wurden. Da dies viele Namen sind, wird ein Programmierer sich ihrer vermutlich nicht immer bewußt sein.

Bei der Verwendung mehrerer using -Direktive ist es auch weniger klar, zu welchem Namensraum ein im Programm verwendeter Name nun gehört.

Es kann auch sein, daß die Verwendung mehrerer using -Direktiven zunächst nicht zu Problemen führt, aber später Probleme auftreten werden, weil die importierten Namensräume im Laufe der Zeit erweitert wurden.

Deswegen wird die Verwendung der using -Direktive von einigen erfahrenen Programmierern oft abgelehnt, es gibt aber auch andere, die sie regelmäßig verwenden.

Die using -Direktive kann eventuell einmal nützlich sein, wenn ältere Programme  aus der Zeit als es in C++  noch keine Namensräume gab, mit einem neueren C++ -Compiler übersetzt werden sollen.

Bei kleinen Programmen für den kurzfristigen Gebrauch, bei denen es nicht darauf ankommt, daß sie langfristig einsetztbar und wartbar sind, ist die Verwendung der using -Direktive ebenfalls akzeptabel.

Using-Deklarationen sollten nach  den include-Direktiven, aber vor  dem Rest des Programms geschrieben werden.

hallo.cpp

#include <iostream> // ::std::cout
#include <ostream> // <<
#include <string> // "s

using namespace ::std::literals;

using ::std::cout;

int main(){ cout << "Hallo!"s << "\n"s; }

Die Direktive »using namespace ::std::literals;«

Die Direktive »using namespace ::std::literals;« erlaubt es, bestimmte Schreibweisen für Literale, wie »""s«, mit einem »s« am Ende zu schreiben. Ohne diese Direktive, müßte statt »s« »::std::literals::string_literals::s« geschrieben werden, was aber andererseits an dieser Stelle hinter den Anführungszeichen gar nicht erlaubt ist, da dort keine Bereichsauflösungsoperatoren erlaubt sind. Außerdem wäre es wirklich unangemessen lang.

hallo.cpp

#include <iostream> // ::std::cout
#include <ostream> // <<
#include <string> // "s

using namespace ::std::literals;

int main(){ ::std::cout << "Hallo!"s << "\n"s; }

Diese Direktive ist daher unvermeidlich, wenn bestimmte Schreibweisen für Literale wie »""s« verwendet werden sollen. Es spricht daher nichts gegen die Verwendung dieser Direktive.

Die Schreibweise ohne »using namespace ::std::literals;« *

Die in diesem Abschnitt nur zur Illustration gezeigten Schreibweisen müssen hier nicht genau verstanden werden!

Ohne »using namespace ::std::literals;« wäre die folgende, kompliziertere Schreibweise in der letzten Zeile nötig.

main.cpp

#include <iostream>
#include <ostream>
#include <string>

int main(){ ::std::cout << ::std::literals::operator""s( "Hallo, Welt", 11 )<< '\n'; }

transcript
Hallo, Welt

Nach »using namespace ::std::literals;« kann diese zunächst zur folgenden Schreibweise verkürzt werden.

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int main(){ ::std::cout << operator""s( "Hallo, Welt", 11 )<< '\n'; }

transcript
Hallo, Welt

Danach kann »operator""s( "Hallo, Welt", 11 )« dann weiter zu der im Kurs normalerweise verwendeten Schreibweise »"Hallo, Welt"s« verkürzt werden.

Übungsfragen *

?    Die using -Deklaration
Welche der Programmausschnitte enthalten eine using -Deklaration?
o »int main(){ ::std::cout << 65 << "\n"; }«
o »using ::std::cout; int main(){ cout << 65 << "\n"; }«
o »using namespace ::std; int main(){ cout << 65 << "\n"; }«

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram721122 stefan_ram:721122 source, source code,sourcecode, Programmier sprache C++ Sprache, C++, CXX, C+, Programm, Programme, C++-Programm C++ Sprache C++ Programmiersprache C++ c++-Programme, Standard C++, Programmieren in C++, Programmieren in CXX, Programmieren in CPP, Programmieren in Cplusplus, Die Programmiersprache C++, Die Programmiersprache CXX, Die Programmiersprache CPP, Die Programmiersprache Cplusplus, Die Programmier sprache C++, Die Programmier sprache CXX, Die Programmier sprache CPP, Die Programmier sprache Cplusplus, CXX-Programmierung, C++-Programmierung, CPP-Programmierung, c-plus-plus, cpluplus-Programmierung, ANSI-C++, ANSI-CXX, ANSI-CPP, ANSI C++, ANSI CXX, ANSI-cpluscplus ISO-C++, ISO-CXX, ISO CPP, ISO C++, ISO CXX, ISO/IEC-C++, ISO/IEC-CXX, ISO/IEC CPP, ISO/IEC C++, ISO/IEC CXX, IEC-C++, IEC-CXX, IEC CPP, IEC C++, IEC CXX, International Standard ISO/IEC 14882 First edition 1998-09-01, ISO/IEC 14882:1998(E), ISO/IEC 14882:2003(E), ASC X3, 7/27/98, c plus plus, C ++, cplusplus, c plus plus, Standard C+ programmieren, Stamdard C++ programmieren, Standart C+ programmieren, Stamdart C++ programmieren, INCITS/ISO/IEC 14882-1998, Information Technology - Programming Languages - C++ (formerly ISO/IEC 14882-1998), Programmieren in C++,Programmiersprache C++ CPP CXX Cplusplus c plus plus International Standard ISO/IEC 14882 First edition 1998-09-01, Softwareentwicklung, Software-Entwicklung, Software Entwicklung, Softwareprogrammierung, Software-Programmierung, Software Programmierung, Softwareherstellung, Software-Herstellung, Software Herstellung, Softwareerstellung, Software-Erstellung, Software Erstellung, Softwareengineering, Software-Engineering, Software Engineering, Softwareenginering, Software-Enginering, Software Enginering, Softwaremethodik, Software-Methodik, Software Methodik, Programmiermethodik, Programmier-Methodik, Programmier Methodik, Softwaredidaktik, Software-Didaktik, Software Didaktik, Methodik des Programmierens, Didaktik des Programmierens, Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens, Programmieren, Programmierung, Computer Science, Informatik, Informatik, Informationspädagogik, Informationspaedagogik, Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen, Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still, , Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd721122, slrprddef721122, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/c++_using_de