Diskussion:Include-Guard
Überarbeitung des Textes
[Quelltext bearbeiten]Mehrfacheinbindung
[Quelltext bearbeiten]Es 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
[Quelltext bearbeiten]Es 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"
[Quelltext bearbeiten]Die Ü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
[Quelltext bearbeiten]Ein 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"
[Quelltext bearbeiten]Im 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
[Quelltext 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
[Quelltext bearbeiten]Aus 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
[Quelltext bearbeiten]Der 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.