Was ist ein Modul in C ++?

9

Worauf bezieht sich der Begriff Modul im folgenden Satz?

  

Lassen Sie keine Ausnahmen über Modulgrenzen hinweg propagieren.

Dies ist Regel 62 in C ++ Coding Standards von Herb Sutter und Andrei Alexandrescu.

>

Ich habe jetzt das Buch gelesen, daher möchte ich den Abschnitt Zusammenfassung zitieren, der meiner Meinung nach mehr Klarheit bringt:

  

Wirf keine Steine ​​in den Garten deines Nachbarn: Es gibt keinen allgegenwärtigen binären Standard für die C ++ - Ausnahmeverarbeitung. Lassen Sie keine Ausnahmen zwischen zwei Codeteilen weiterleiten, wenn Sie nicht den Compiler und die Compileroptionen steuern, die zum Erstellen beider Seiten verwendet werden. Andernfalls unterstützen die Module möglicherweise keine kompatiblen Implementierungen für die Ausnahmeausbreitung. In der Regel läuft dies auf Folgendes hinaus: Lassen Sie keine Ausnahmen über Modul- / Subsystemgrenzen hinweg propagieren.

    
M. Dudley 05.02.2013, 18:53
quelle

2 Antworten

4

Das ist eine gute Frage. Der C ++ - Standard verwendet das Wort nicht Modul (ich denke nicht, zumindest), und die übliche Bedeutung des Alltags ist so etwas wie eine Übersetzungseinheit. Außer dass das nicht sein kann was Herb und Andrei meinen, seit dem wirklichen Zweck des Verwendens Ausnahmen bestehen darin, sich aus dem lokalen Körper von Code - sonst würden Sie Rückgabecodes verwenden.

Ich kann nur raten, aber sie bedeuten wahrscheinlich etwas, das könnte vernünftigerweise in einer anderen DLL implementiert werden. Vermehrung Ausnahmen über DLL-Grenzen könnte ein Problem sein, wenn die DLLs wurden mit einem anderen Compiler kompiliert oder verwendet eine andere Sprache. Ansonsten ...

Es wird normalerweise als beste Methode angesehen, einen einzigen Versuch / Fang zu haben Block in main (oder in einer anderen High-Level-Funktion, in jedem thread) und alle Ausnahmen dort abfangen, egal wo Sie kommen aus. Und es gibt keine Probleme mit modernen Compilern, wenn Sie dies tun.

    
James Kanze 05.02.2013, 19:05
quelle
0

Ich habe dieses Buch nicht gelesen, aber es klingt, als sei es wahrscheinlich das Modulkonzept, das in diesem pdf ausführlich beschrieben wird von der Universität von Michigan .

Dh. Ein Modul ist eine einzelne Kompilierungseinheit, die normalerweise aus einer Header-Datei und einer Quelldatei besteht.

Dies ist im Zusammenhang mit Ihrem Zitat aus dem Buch sinnvoll, da die Kontrolle der Kompilierung hervorgehoben wird. Wenn Sie eigenständige Funktionen in einer einzelnen Kompilierungseinheit (Modul) haben, müssen Sie sich keine Sorgen darüber machen, dass Ihre kompilierte Funktionalität aufgrund der Abhängigkeit von einer bestimmten Compilerfunktion unvollständig wird.

    
steventaitinger 07.07.2015 19:20
quelle

Tags und Links