2015-06-27 7 views
5

Ich möchte eine Kopfzeile aus dem Internet enthalten. Zum Beispiel: Datei add.h und add.cpp wurden auf github.com gepostet.C++ Include aus dem Internet

Datei add.h ist int add (int a, int b);

Datei add.cpp int (int a, int b) hinzufügen {return a + b;}

in meinem main.cpp möchte ich den Code wie dieser

#include "github.com/xxx/add.h" 
int main(){ 
int a = add(1,1); 
} 

Bei der Kompilierung beginnen Compiler kann automatisch add.cpp von github.com herunterladen

Kann dies passieren?

Antwort

4

Nein, es wird nicht passieren (vorausgesetzt, Sie verwenden keine Art von Maschinen holen). Der Präprozessor enthält nur lokale Dateien mit einer Direktive #include.

C++ funktioniert nicht wie Go oder Javascript

Dateien auf Github gehostet werden, bedeutete, dass mit git werden ausgecheckt und dann verwendet.

Ich empfehle eine C++ und ein Git Buch zu lesen, bevor Sie fortfahren (oder Ihr Compiler/Build-System manuell zusätzliche fetching Schritte hinzufügen)

+5

Außer natürlich wenn jemand ein virtuelles Laufwerk baut, das zu Github geht und das Zeug ergreift. Ich werde dort aufhören, bevor ich irgendjemanden irgendwelche verrückten Ideen gebe. – Mysticial

4

C++ nicht diese Funktion nativ unterstützt. Du müsstest es selbst bauen.

Sie könnten einen zusätzlichen Schritt zu Ihrem Build-System, das Code

  1. parsen Ihre Quelle hinzufügen für über
  2. wie das in Ihrem Beispiel enthält lädt die Include-Dateien (und auch erforderlich, *.cppirgendwie)
  3. generiert eine aktualisierte Version Ihres Quellcodes, der auf die heruntergeladenen Dateien verweist.
  4. setzt dann den Build wie gewohnt

Dies ist eine Menge Arbeit.

Besser in etwas wie ExternalProjects CMake suchen. Diese Funktion kann Abhängigkeiten herunterladen, erstellen und installieren, damit Ihr Projekt sie verwenden kann. Natürlich gibt es alternative Technologien (@ Kommentatoren fügen Sie bitte Ihre Favoriten hinzu).

UPDATE: (dank @Angew)

Technisch, C++ ist nicht festgelegt, wie das Argument einer # include-Direktive verarbeitet wird. Es sind all die bekannten Compiler, die "diese Funktion nicht nativ unterstützen", nicht C++ selbst. Ein Compiler, der dies unterstützt, könnte vollständig standardkonform sein.

+0

Technisch spezifiziert C++ nicht, wie das Argument einer '# include' Direktive verarbeitet wird.Es sind * alle bekannten Compiler *, die "diese Funktion nicht nativ unterstützen", nicht C++ selbst. Ein Compiler, der dies unterstützt, könnte vollständig standardkonform sein. – Angew

Verwandte Themen