Diskussion:Include-Guard
Überarbeitung des Textes
BearbeitenMehrfacheinbindung
BearbeitenEs soll nicht nur eine doppelte Einbindung verhindert werden, sondern Mehrfacheinbindungen jeglicher Anzahl, deshalb ist "Mehrfacheinbindung" hier vorzuziehen.
- Der Begriff "double inclusion" ist ein im englisch-sprachigen üblicher Begriff für diese Problematik. Siehe Google. -- Plankton314 (Diskussion) 01:42, 2. Mai 2012 (CEST)
- Hier befinden wir uns aber im Deutschsprachigen. Und Richtigkeit zählt mehr als Verbreitung. --Sunks (Diskussion) 03:18, 2. Mai 2012 (CEST)
Modul
BearbeitenEs gibt sowohl die Bezeichnung "Modul" als auch "Übersetzungseinheit". (entsprechend angepasst)
- Modul beschreibt im C++-Standard eindeutig, was zu einer Übersetzungseinheit gehört. -- Plankton314 (Diskussion) 01:42, 2. Mai 2012 (CEST)
- Nein, das ist nicht richtig. Der Begriff heißt "translation unit", zu deutsch "Übersetzungseinheit". Kannst du mir irgendeine Stelle im C++-Standard nennen, wo das Wort "module" verwendet wird? --Sunks (Diskussion) 03:18, 2. Mai 2012 (CEST)
- Stimmt, Falschaussage meinerseits. Genaugenommen heißt es "proprocessing translation unit". -- Plankton314 (Diskussion) 22:30, 2. Mai 2012 (CEST)
- Es wird aber in der Fachliteratur als "Modul" bezeichnet, insofern hast du mit Recht auf diesen Begriff hingewiesen. Da war ich mit dem Entfernen etwas voreilig. --Sunks (Diskussion) 02:25, 3. Mai 2012 (CEST)
- Ja, das hatte ich auch im Kopf. Allerdings kommt der Begriff Modul soweit ich gesehen habe im Standard nicht vor, auch nicht in den Dokus.
- Der Begriff Modul (Software) existiert zwar, inzwischen war ich aber soweit, dass hier "Übersetzungseinheit" besser passt, da wir uns mit der Beschreibung doch eigentlich auf Compiler-Ebene bewegen und nicht im Bereich Software-Engineering, o. ä. -- Plankton314 (Diskussion) 10:45, 3. Mai 2012 (CEST)
- Es wird aber in der Fachliteratur als "Modul" bezeichnet, insofern hast du mit Recht auf diesen Begriff hingewiesen. Da war ich mit dem Entfernen etwas voreilig. --Sunks (Diskussion) 02:25, 3. Mai 2012 (CEST)
- Stimmt, Falschaussage meinerseits. Genaugenommen heißt es "proprocessing translation unit". -- Plankton314 (Diskussion) 22:30, 2. Mai 2012 (CEST)
- Nein, das ist nicht richtig. Der Begriff heißt "translation unit", zu deutsch "Übersetzungseinheit". Kannst du mir irgendeine Stelle im C++-Standard nennen, wo das Wort "module" verwendet wird? --Sunks (Diskussion) 03:18, 2. Mai 2012 (CEST)
Überschrift "Verhinderung der Mehrfacheinbindung mit Präprozessor-Variablen"
BearbeitenDie Überschrift "Verhinderung der Mehrfacheinbindung mit Präprozessor-Variablen" ist treffender, verständlicher und sprachlich eleganter.
- Das ist IMO kein Deutsch. Davon abgesehen sind die entsprechenden Guard-Begriffe bei der Suche im GCC-Manual und auf div. anderen Seiten, wie stackoverflow, durchaus gebräuchlich. -- Plankton314 (Diskussion) 01:42, 2. Mai 2012 (CEST)
- Also "#ifndef Wrapper (oder Makro-Guard)" ist deiner Meinung nach deutsch? Das GCC-Manual kann selbstverständlich die eigene Terminologie verwenden; deshalb ist sie aber noch lange nicht allgemeingültig. --Sunks (Diskussion) 03:18, 2. Mai 2012 (CEST)
Makro
BearbeitenEin Makro kann sowohl eine Variable als auch eine Funktion repräsentieren. Da es hier um die Variable geht, halte ich die Bezeichnung für angebrachter. Der Text wird dadurch verständlicher.
- Der entsprechende Fachausdruck ist Makro weil er über das entsprechende Präprozessor-Kommando deklariert wird, unabhängig davon für was er steht. Es ist in keinem Fall variabel. Lies das bitte in der Doku des GCC und MSVC nach. -- Plankton314 (Diskussion) 01:42, 2. Mai 2012 (CEST)
- Wegen #undef ist es eben doch variabel. --Sunks (Diskussion) 03:18, 2. Mai 2012 (CEST)
- Es ist und bleibt ein Macro, auch in diesem Zusammenhang mit #ifndef. Schau in die Doku des GCC, MSVC oder den C99-Standard, Kapitel 6.10.1. -- Plankton314 (Diskussion) 22:30, 2. Mai 2012 (CEST)
- Ja, das ist richtig. Der Zusammenhang ist aber nicht jedem klar. Es sollen ja auch solche Leser den Artikel verstehen können, die sich nicht so tief in der Materie auskennen. --Sunks (Diskussion) 02:25, 3. Mai 2012 (CEST)
- Verstehe grundsätzlich was du meinst, bin aber der Meinung, dass man an irgendeinem Punkt anfangen muss den entsprechenden (Fach-)Begriff zu verwenden und Makro ist einfach hier der entsprechende Begriff. Auch wenn ich nach "preprocessor macro" suche, erhalte ich als erste Hits sofort die GCC- und MSDN-Dokus sowie einige C++-Programmier-Seiten.
- Ich möchte/muss hier hartnäckig bleiben, dass es "Makro" heißt, das ist der offizielle Begriff für das was nach "#define" folgt. Er ist richtig und verbreitet. -- Plankton314 (Diskussion) 10:51, 3. Mai 2012 (CEST)
- Ok, wir lassen den Begriff drin. Aber ggf. kann man ihn noch etwas besser erläutern. --Sunks (Diskussion) 16:31, 3. Mai 2012 (CEST)
- Vielleicht helfen diese Interwiki-Links. -- Plankton314 (Diskussion) 18:34, 3. Mai 2012 (CEST)
- Ok, wir lassen den Begriff drin. Aber ggf. kann man ihn noch etwas besser erläutern. --Sunks (Diskussion) 16:31, 3. Mai 2012 (CEST)
- Ja, das ist richtig. Der Zusammenhang ist aber nicht jedem klar. Es sollen ja auch solche Leser den Artikel verstehen können, die sich nicht so tief in der Materie auskennen. --Sunks (Diskussion) 02:25, 3. Mai 2012 (CEST)
- Es ist und bleibt ein Macro, auch in diesem Zusammenhang mit #ifndef. Schau in die Doku des GCC, MSVC oder den C99-Standard, Kapitel 6.10.1. -- Plankton314 (Diskussion) 22:30, 2. Mai 2012 (CEST)
- Wegen #undef ist es eben doch variabel. --Sunks (Diskussion) 03:18, 2. Mai 2012 (CEST)
"namespace pollution"
BearbeitenIm alten Text stand Das eigentliche Problem mit dieser Technik ist die sog. namespace pollution. Das ist hier aber nicht der springende Punkt, denn Präprozessor-Makros kennen keine namespaces, und die Mehrfacheinbindung der Header soll ja gerade global verhindert werden. Bitte noch einmal diesen Punkt überdenken. Idealerweise vor einer Änderung hier ausdiskutieren.
- namespace polution hat nichts mit individuellen namespaces zu tun. Bitte ebenfalls nachlesen. Außerdem ist der Begriff im Text entsprechend erklärt. -- Plankton314 (Diskussion) 01:42, 2. Mai 2012 (CEST)
- Bitte auf das Argument "Mehrfacheinbindung der Header soll ja gerade global verhindert werden" eingehen. --Sunks (Diskussion) 03:18, 2. Mai 2012 (CEST)
- Verhinderung hin oder her, es ist eine Tatsache - und diese kann zum Problem werden -, dass diese Namen in den globalen Namensraum eingeführt werden. -- Plankton314 (Diskussion) 22:30, 2. Mai 2012 (CEST)
- Ok. Vielleicht könnte man aber noch an der Formulierung feilen. --Sunks (Diskussion) 02:25, 3. Mai 2012 (CEST)
- Verhinderung hin oder her, es ist eine Tatsache - und diese kann zum Problem werden -, dass diese Namen in den globalen Namensraum eingeführt werden. -- Plankton314 (Diskussion) 22:30, 2. Mai 2012 (CEST)
- Bitte auf das Argument "Mehrfacheinbindung der Header soll ja gerade global verhindert werden" eingehen. --Sunks (Diskussion) 03:18, 2. Mai 2012 (CEST)
Spracherweiterungen
Bearbeiten"#pragma Guard" ist keine sehr verbreitete Bezeichnung.
- "#pragma Guard" leitet ebenfalls im englisch-sprachigen Wiki auf diese Seite weiter. In jedem Fall ist es verbreiteter als "Verhinderung der Mehrfacheinbindung mit Hilfe von Spracherweiterungen". Außerdem ist die Bezeichnung [Präprozessor-Directive] "guard" in diesem Fall in den Diskussionen üblich. -- Plankton314 (Diskussion) 01:42, 2. Mai 2012 (CEST)
- Das englisch-sprachige Wiki ist nicht als Referenz zulässig, und nicht ohne Grund werden Links auf Diskussionsforen in der Wikipedia nicht gern gesehen. Das Problem bei Diskussionsforen ist die mangelnde Verlässlichkeit.
- Vor allem die Verständlichkeit für Laien ist wichtig. Dementsprechend ist auch die Sprache auszurichten. --Sunks (Diskussion) 03:18, 2. Mai 2012 (CEST)
#pragma once Verbreitet
BearbeitenAus dem Text im letzten Abschnitt lässt es den Eindruck, dass #pragma once nur von einigen wenigen Compilern unterstützt wird und dass es sehr unportabel ist. In Wirklichkeit wird diese Spracherweiterung von allen ernstzunehmenden C++-Implementierungen unterstützt (https://en.wikipedia.org/wiki/Pragma_once). (nicht signierter Beitrag von Asfdlol (Diskussion | Beiträge) 08:56, 16. Mai 2014 (CEST))
- Danke, ich denke, dass passt so, wie du es auch ergänzt hast und erledigt das hier mal.--Plankton314 (Diskussion) 20:03, 18. Mai 2014 (CEST)
Defekter Weblink
BearbeitenDer folgende Weblink wurde von einem Bot („GiftBot“) als nicht erreichbar erkannt. |
---|
|
- http://blogs.msdn.com/b/ericflee/archive/2008/04/17/pragma-once.aspx
- Im Jahr 2012 bereits defekt gewesen.