2012-03-24 4 views
2

Ich suche C++ - Anwendungen für Windows und * nix zu erstellen. Zusätzlich dazu, dass ich testen kann, ob alles in einem einzigen Schritt kompiliert wird, frage ich mich, ob ich tatsächlich Teile des C++ - Standards verwenden kann, die VC++ noch nicht unterstützt - wie variadische Vorlagen und einige andere Funktionen.Ermöglicht das Cross-Compilieren von * nix mit GCC unter Windows die Verwendung von Funktionen, die VC++ noch nicht unterstützt?

Wäre das möglich? Logik scheint zu diktieren, dass dies so ist, aber ich denke, es hängt davon ab, ob gcc ein windowsspezifisches Werkzeug benötigt, das diese Dinge als Teil der Kreuz-Kompilierungsstufe erzeugt.

+0

Was ist * nix? Ist es vergleichbar mit Unix? – stefaanv

+0

@stefaanv: '* nix' ist eine Abkürzung, die "verschiedene Unterarten von Unix, einschließlich Linux" bezeichnet. –

Antwort

3

Ich frage mich, ob mir das eigentlich erlaubt Teile des C++ Standard zu verwenden, dass VC++ noch nicht Unterstützung bietet - wie variadische Vorlagen und ein paar andere Funktionen.

Ja. Was für die endgültige ausführbare Datei von Bedeutung ist, ist der Code, den der Compiler generiert oder mit dem er verknüpft, nicht was VC++ tun kann.

Allerdings vorsichtig sein mit Plattform spezifische Anweisungen und Methoden.

+0

Es gibt eine ganze Menge von C++ 11, die in der CRT und der C++ - Standardbibliothek implementiert ist. Nicht nur der Compiler. –

+0

@Hans: gut, um darauf hinzuweisen - bearbeitet, um dies zu reflektieren (als IMO betrifft dies nicht das "Ja" selbst) – peterchen

2

Nun, vor allem, wenn Sie in Standard-C++ schreiben, wird VC++ früher oder später aufholen, was fehlt. Zweitens sind Sie nicht gezwungen, VC++ unter Windows zu verwenden. Sie können MinGW verwenden, das mit gcc nach Windows portiert wurde.

Im Allgemeinen, wenn portable Software zu schreiben, gibt es zwei Dinge, die Sie beachten sollten:

  • Architektur spezifische Operationen: Software portabel zu machen, können Sie nicht auf eine bestimmte Architektur verlassen sollten. Angenommen, long int ist 32 Bit.
  • Betriebssystembetrieb: Dies ist vielleicht eher ein Problem und schwieriger zu handhaben. Wenn Sie eine Operation haben, die betriebssystemspezifisch ist, z. B. das Erstellen eines Verzeichnisses, sollten Sie dafür eine eigene Funktion schreiben, in der Sie verschiedene Aufgaben ausführen, auf deren Grundlage sie kompiliert werden.
Verwandte Themen