Probleme beim benutzen von header

Gast #5953068
Hallo,

Mein Source Code (C) liegt in verzeichnis "A". Jetzt muss ich eine 
Header anziehen, welche im Verzeichnis "B" liegt. Diese zieht wiederum 
eine Header an, welche aber ebenfalls im Verzeichnis "B" liegt. Beim 
Bauen bekomme ich jetzt die Fehlermeldung, dass die zweite angezogene 
Header nicht gefunden werden kann.

Verzeichnis A
a.c
1
#include "..\..\VerzichnisB\Include\headerB.h"

VerzeichnisB
headerB.h
headerC.h

in headerB.h steht dann
1
#include <headerC.h>

Die Fehlermeldung ist:
could not open source file "headerC.h"
#include <headerC.h>

diese Befindet sich aber definitiv im selben Ordner und zieht selber 
nichts mehr an

Wie bekomme ich es hin, dass ich headerB.h anziehen kann?
Gast
WIRO schrieb:
> Funktioniert es denn, wenn die Verzeichnisangaben nicht relativ sondern
> absolut gemacht werden <lw:\pfad\Dateiname>?

Bei mir sicher nicht, weil mein Rechner gar nicht weiß, was 
Laufwerksbuchstaben sind. Also: Nein. Quelltexte sollten unabhängig vom 
Rechner sein, auf dem compiliert wird.
Du müsstest in HeaderB den Pfad auch wie in a.c schreiben. Das include 
ist quasi ein komplettes einfügen a.c.
Darum ist es bei sowas auch besser das ganze Verzeichnis B in den 
Compiler Pfad mit auf zunehmen und dann ohne Pfad im include zu arbeiten
Gast
Warum sollte sich beim include auch das aktuelle Verzeichnis ändern?
Dann würde ich in headerB.h folgende Zeile verwenden:

  #include "..\..\VerzichnisB\Include\headerC.h"

Gruß,
WIRO
Gast
Jana schrieb:
> Nur die Header, welche von headerB.h
> aufgerufen wird, wird nicht gefunden

Logisch, weil er denkt, dass die Datei 
"..\..\VerzichnisB\Include\headerB.h" heißt und im aktuellen Verzeichnis 
liegt.

Er soll aber wissen, dass die Datei "headerB.h" heisst und im 
Verzeichnis "..\..\VerzichnisB\Include\" liegt, damit relative Pfade 
innerhalb dieser Datei auf das Verzeichnis "..\..\VerzichnisB\Include\" 
angewendet werden.
Gast
Für Windows sind Pfad und Dateiname einfach nur ein langer String, aber 
der Präprozessor (des Compilers) muss das aufsplitten, um die relativen 
Pfade richtig zusammen zu setzen.

Er muss aber wissen, dass die Datei "headerB.h" heisst und im 
Verzeichnis "..\..\VerzichnisB\Include\" liegt, damit relative Pfade 
innerhalb dieser Datei auf das Verzeichnis "..\..\VerzichnisB\Include\" 
angewendet werden.

Weil du die falschen Trennzeichen verwendest, splittet der Präprozessor 
diesen String falsch (bzw gar nicht).

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.