Diskussion:Include-Guard

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 8 Jahren von GiftBot in Abschnitt Defekter Weblink
Zur Navigation springen Zur Suche springen

Ü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)Beantworten
Hier befinden wir uns aber im Deutschsprachigen. Und Richtigkeit zählt mehr als Verbreitung. --Sunks (Diskussion) 03:18, 2. Mai 2012 (CEST)Beantworten

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)Beantworten
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)Beantworten
Stimmt, Falschaussage meinerseits. Genaugenommen heißt es "proprocessing translation unit". -- Plankton314 (Diskussion) 22:30, 2. Mai 2012 (CEST)Beantworten
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)Beantworten
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)Beantworten

Ü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)Beantworten
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)Beantworten

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)Beantworten
Wegen #undef ist es eben doch variabel. --Sunks (Diskussion) 03:18, 2. Mai 2012 (CEST)Beantworten
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)Beantworten
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)Beantworten
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)Beantworten
Ok, wir lassen den Begriff drin. Aber ggf. kann man ihn noch etwas besser erläutern. --Sunks (Diskussion) 16:31, 3. Mai 2012 (CEST)Beantworten
Vielleicht helfen diese Interwiki-Links. -- Plankton314 (Diskussion) 18:34, 3. Mai 2012 (CEST)Beantworten

"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)Beantworten
Bitte auf das Argument "Mehrfacheinbindung der Header soll ja gerade global verhindert werden" eingehen. --Sunks (Diskussion) 03:18, 2. Mai 2012 (CEST)Beantworten
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)Beantworten
Ok. Vielleicht könnte man aber noch an der Formulierung feilen. --Sunks (Diskussion) 02:25, 3. Mai 2012 (CEST)Beantworten

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)Beantworten
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)Beantworten

#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))Beantworten

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)Beantworten
Dieser Abschnitt kann archiviert werden. --Plankton314 (Diskussion) 20:03, 18. Mai 2014 (CEST)

Defekter Weblink[Quelltext bearbeiten]

GiftBot (Diskussion) 08:36, 3. Feb. 2016 (CET)Beantworten