2012-05-22 7 views
13

Ich bin sehr interrogativ und perplex von this commit on android's dalvik platform vor einem Jahr geschoben.Vorteile der Kompilierung von C-Code mit GCC C++ Front-End

Dateierweiterungen wurden in C++ - Erweiterungen geändert, um "den Interpreter in C++ zu verschieben" - verwenden Sie das C++ - Frontend des Compilers.

Was könnten die Vorteile dieser Änderung sein? Dalvik Platform ist ein 100% C & asm Projekt und keine C++ Funktion wird verwendet.

+2

C++ hat eine bessere/strengere Typsicherheit und eine andere (effizientere?) Aufrufkonvention –

Antwort

3

Ich kann nur spekulieren, aber wenn man bedenkt, wie das Android-System in der Komplexität gewachsen ist, können die Scoping-Funktionen von C++ (Klassen und Namespaces) die Code-Basis besser handhabbar machen.

EDIT

Auch wenn das Projekt voran geht derzeit nicht Verwendung von C++ Eigenschaften machen, sie können einfach planen werden.

Abgesehen von einigen geringfügigen Unterschieden (nämlich einige Parameterkonventionen, die die meisten Leute sowieso vermeiden), kompiliert C-Quellcode als C++ ohne Modifikation. In einigen Bereichen ist die C++ - Syntax strenger als C (C erlaubt es Ihnen, einen void-Zeiger einem anderen Zeigertyp ohne eine Umwandlung zuzuordnen; in C++ ist dies ein Fehler), und die Durchsetzung dieser Strenge vermeidet Probleme im weiteren Verlauf. *

*) (Das ist eine allzu vereinfachende Sicht, siehe Kommentar)

Ein weiterer Grund für die Änderung, dass sein kann, weil die meisten modernen Entwicklung begünstigt C++ über C, ein reicher Satz von Werkzeugen zur Verfügung steht .

Spekulieren wieder, aber bei der Geburt von Android C könnte die einzige praktikable Option für die Entwicklung von Embedded-Geräten gewesen sein, und jetzt ist diese Einschränkung kein Problem mehr.

+0

Das war meine erste Reaktion, aber ich fand keine C++ - Funktionen, die im Code verwendet wurden. –

+3

Nein, C und C++ sind grundsätzlich nur schnittstellenkompatibel und nicht kompilierbar. Es gibt viele, viele kleine Fallstricke, angefangen von Bereichen für die Benennung von Typen, über ein anderes Konzept von Kompilierzeitkonstanten und solche Sachen. –

+0

@JensGustedt Guter Punkt! Kann man, solange man die strengeren Syntaxanforderungen von C++ befolgt, C als eine Teilmenge von C++ behandeln? –