Frage

Ich habe gerade entdeckt dieses alten C ++ 0x Entwurf über Module in C ++ 0x.

Die Idee war von dem aktuellen .h / CPP-System von nur CPP-Dateien zu schreiben, um aus den dann Modul Dateien während der Kompilierung erzeugen würde, die dann wiederum würden von den anderen CPP-Dateien verwendet werden.

Das sieht wie ein wirklich tolles Feature.

Aber meine Frage ist: warum haben sie entfernen sie aus der C ++ 0x? War es, weil zu viele technische Schwierigkeiten? Zeitmangel? Und denken Sie, werden sie auf es für eine entferntere Version von C ++ betrachten arbeiten?

War es hilfreich?

Lösung

Aus dem Bundesstaat C ++ Evolution (Beitrag San Francisco 2008) wurde der Module Vorschlag kategorisiert „Heading für einen separaten TR:“

Diese Themen zu wichtig, als für eine anderen Standard nach C ++ 0x zu warten bevor er veröffentlicht werden, aber auch experimentellen werden rechtzeitig für den nächsten Standard abgeschlossen. Daher werden diese Funktionen durch einen technischen Bericht zum frühestmöglichen Zeitpunkt geliefert werden.

Die Module Vorschlag war einfach nicht bereit und wartet auf den C ++ 0x-Standard Finishing verzögert haben würde. Es war nicht wirklich entfernt, es war einfach nie in das Arbeitspapier aufgenommen wird.

Andere Tipps

C ++ Module Entwurf (Technische Daten nach C ++ 17)

Ein Entwurf und mehrere aktualisierte Versionen für die C / C ++ Modulspezifikation sind von WG21 auf open-std.org. Ich werde verlinkt nur auf die aktuellsten Dokumente hier:

  • Working Draft, Erweiterungen für C ++ für Module N4610 (Oktober 2016).
  • Vierte Revision veröffentlicht als P0142R0 (März 2016).
  • Wording für Module veröffentlicht, wie P0143R2 (März 2016).
  • Das Klirren Team eine zweite Revision ihrer Änderungen veröffentlicht: P0273R1 (Oktober 2016).

Die folgenden Blog-Beiträge enthalten eine Zusammenfassung der Normen Sitzungen und insbesondere eine Zusammenfassung des aktuellen Status der Module Entwurf:

  • Trip Report: die Klirren Module Seite . Allerdings hat Klirren derzeit keine konkrete Syntax für Module implementieren, das heißt, keine der oben genannte Syntax wird von Clang implementiert. Diese Seite enthält die folgende Anweisung zu erklären:

    Zur Zeit gibt es keine C oder C ++ Syntax für Einfuhranmeldungen. Clang die Module Vorschlag verfolgen in dem C ++ Ausschuss. Siehe Abschnitt als Import Enthält zu sehen, wie Module heute importiert werden.

    Der Hauptteil, die derzeit von Clang implementiert wird, ist die „Modul Map Sprache“, das Schreibmodul für bestehende Code-Karten ermöglicht es, dass immer noch die Header-Dateien verwendet.

    Makro Exporte aus Module

    Wie bereits erwähnt noch unklar ist, ob Makro Exporte Teil des abschließenden Module TS sein. In P0273R1 wurde die folgende Syntax vorgeschlagen für den Export von Makros:

    #export define MAX(A,B) ((A) > (B)) ? (A) : (B);
    

Clang ist der erste Compiler auf Modulen zu arbeiten beginnen, noch bevor die Standardisierung abgeschlossen ist. Es ist nicht viel von einer Dokumentation noch nicht, aber Beispielcode könnte hier:
http://llvm.org/viewvc/llvm-project/cfe/ Stamm / test / Module /

Einige Kommentare von Douglas Gregor (der Entwickler deren Umsetzung):
http://clang-developers.42468.n3.nabble.com /C-modules-td3619936.html

In der Theorie kann man eine Reihe von Hilfsmakros wie begin_module, end_module, import_module definieren sich aus irgendwelchen wahrscheinlich Änderungen an der Syntax zu schützen, die in Zukunft kommen wird.

EDIT 1:
Douglas Gregor hat einen Vortrag über seine Umsetzung freigegeben:
http://llvm.org/devmtg/2012-11/Gregor- Modules.pdf? = einreichen

EDIT 2:
Der Modulträger in Klirren sind hier dokumentiert:
http://clang.llvm.org/docs/Modules.html

EDIT 3:
Die Module werden nun auch in Microsoft C ++ Compiler unterstützt: http : //blogs.msdn.com/b/vcblog/archive/2015/12/03/c-modules-in-vs-2015-update-1.aspx

  1. Da es sich um sehr große konzeptionelle Änderung.
  2. Es gibt keine wirkliche Notwendigkeit, es als Trennung der Quellen h / CPP macht den Job
  3. Da C ++ definiert nicht, wie tatsächliche „Module“ Bibliotheken sind zu bauen. Es verlässt es Compiler Entwickler und Linker.
  4. „Module“ sind manchmal ziemlich plattformabhängig, zB DLLs ganz anders von gemeinsam genutzten Objekten. So ist es nicht so trivial ist zwischen diesen Konzepten zu verbinden.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top