#include übergeordnetes Verzeichnis die Datei
Meine Ordner Struktur ist
libA
x.h
y.h
algorithm/
a.h
Nun in a.h
ich habe #include "libA/x.h"
was nicht funktioniert. Ihre Suche nach algorithm/libA/x.h
. Also sollte ich #include "../x.h"
? Ist die zweite option ein schlechtes design ? derzeit libA-header. aber ich letztere können wählen, um es zu kompilieren, wie eine Bibliothek
Ich bin mit cmake So kann ich oder Sollte ich libA
in meinem include-Pfad ?
In kurzen
einige Dateien in Meinem Algorithmus-Verzeichnis enthalten muss, die Definitionen aus seinem übergeordneten Ordner. Ich kann nicht alle Funktionen Vorlagen, weil die Typen, die offensichtlich sind und es übertreiben.
Also Wie sollte ich Mein Projekt ?
- "So sollte ich
#include "../x.h
" - Haben Sie versucht es? - Was ist dein Compiler (oder genauer gesagt Präprozessoren) opion über den Weg?
- Ich bin mit gcc, aber es sollte funktionieren mit msvc als gut. aber ich habe nie gesehen, diese Compiler weigert
../
im#include
- Meine Antwort wurde kommentarlos gelöscht. Ich hoffe, es war nützlich, solange es da war. In Antwort auf Ihr Kommentar, würde ich prüfen, ob die algoithms wirklich hängt von x und y, oder eher als Merkmale dargestellt, die von diesen Klassen?
- Ich hätte die Funktionen, die im Algorithmus Vorlagen. aber in einigen Fällen ist der Typ ist offensichtlich, das diese Funktionen Vorlagen werden zu übertreiben. Also muss ich zählen. Aber ich brauche die Gruppe der Algorithmus Verwandte Dateien auch
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Lösung mit
#include "../x.h"
arbeiten. Darüber, ob dies ist schlechtes design - es wahrscheinlich ist; schwer zu sagen, ohne zu wissen, mehr über Ihren code.Betrachten Sie die Tatsache, dass, wenn Sie viele include-Pfaden der compiler/Präprozessor sucht
../x.h
ist, alle von Ihnen, die vielleicht unbeabsichtigte und zu breit!Angenommen, Sie haben folgende Verzeichnisstruktur, und
Your_Code
ist in einem Suchpfad für include-Dateien.Dies ist gefährlich. Wenn Sie entfernen/umbenennen real
x.h
, der compiler wird automatisch pickYour_Code/../x.h
enthält unzusammenhängende Zeug - dies kann führen zu kryptischen Fehlermeldungen. Oder noch schlimmer, kann dies eine alte version, voller bugs!Wenn eine Bibliothek, die ich kenne, verwende ich in andere Projekte, ich Neige dazu, die Verwendung von boost ist inclucision Stil:
#include <libA/x.h>
Dies bedeutet, dass, solange der Ordner über "libA" (wahrscheinlich
/include
) vorhanden ist, können Sie auf alles und jedes unter und mit "libA". Es hilft auch, die Vermeidung von Kollisionen von ähnlich benannten Aufnahme-Dateien, wenn Sie Dinge, die boost-Stil, weil Sie in Ihrer Bibliothek und außerhalb Ihrer Bibliothek, Header und andere zugehörige code sind Sie stets auf der Angabe der Bibliothek, die Sie möchten, ziehen Sie "x".h" aus, z.B.Dies ist nur persönliche Präferenz, aber es scheint zu funktionieren gut für die Bibliotheken, die ich entwickle und für
boost
als gut. Hoffe, das hilft!#include <libA/x.h>
funktioniert auch nicht. Seine Klagen Keine solchen Dateien. Wenn ich nun INCLUDE-PFAD hinzufügen libA-Benutzer müssen das gleiche tun, sonst wird es nicht kompiliert#include <boost/[whatever]>
. Es gibt keine Möglichkeit zu vermeiden, es sei denn, der Benutzer fügt die lib-Dateien, um eine grundlegende Ordner, den der compiler sucht immer nach (was für die meisten Anwender in der Regel nicht tun). Also, sagen Sie, fügen Sie das include-Verzeichnis; es ist das beste, was Sie tun können.Wenn Sie gcc verwenden, können Sie add-IPathTo/libA hinzufügen libA, um die Liste der Ordner, und verwenden Sie dann #include "x".h"