header



  • wie legt man denn den ordner fest, indem gesucht wird?



  • @pumuckl! Ehm, das macht er aber nur, bei

    #include <meinheader.h>
    


  • BarnieGeroellheimer schrieb:

    @pumuckl! Ehm, das macht er aber nur, bei

    #include <meinheader.h>
    

    Wenn ich jetzt nicht grade ein Riesenbrett vorm Kopf habe macht er bei <> nur eine Suche in den Systemheader-Verzeichnissen - das ist was anderes als die include-Verzeichnisse (beim gcc z.B. mit -I übergeben)



  • Das ist meines Wissens nicht so. Bei <> sucht der Compiler in den angegebenen Suchpfaden, System wie auch Compiler (/I und INCLUDE), aber nicht im Verzeichnis der inkludierenden Datei (sofern nicht im Suchpfad). Bei "" sucht er wie bei <> und außerdem noch im Verzeichnis der Datei wo das include drin steht.
    [edit]
    Das ist alles implementation defined. Siehe Standard 16.2
    Microsoft macht es z.Bsp. so
    http://msdn.microsoft.com/en-us/library/36k2cdd4.aspx
    [edit]



  • Hallo,

    pumuckl schrieb:

    BarnieGeroellheimer schrieb:

    @pumuckl! Ehm, das macht er aber nur, bei

    #include <meinheader.h>
    

    Wenn ich jetzt nicht grade ein Riesenbrett vorm Kopf habe macht er bei <> nur eine Suche in den Systemheader-Verzeichnissen - das ist was anderes als die include-Verzeichnisse (beim gcc z.B. mit -I übergeben)

    Also der VC++-Compiler sucht in diesem Fall erst in allen Pfaden, die mit der /I-Option angegeben wurden, dann erst in mit der Umgebungsvariablen INCLUDE (nur wenn von der Kommandozeile kompiliert wird, wird diese überhaupt berücksichtigt) festgelegten Pfaden.

    MfG,

    Probe-Nutzer



  • ja, ok, ich versuchs ma 🙂 wie lange programmiert ihr schon?



  • BarnieGeroellheimer schrieb:

    @pumuckl! Ehm, das macht er aber nur, bei

    #include <meinheader.h>
    

    Ich wollts grad sagen. Mit "" sucht der Präprozessor nur im lokalen Verzeichnis und bei <> systemweit, halt in den Include-Pfande, die dem System bzw. dem Compiler bzw. dem Präprozessor bekannt sind.



  • joar, dem msvc is das fast egal...

    #include <asd>
    sucht zu erst in den standardordnern und danach in den selbst hinzugefügten

    #include "asd"
    macht es halt umgedreht...

    zumindest so weit ich das verstanden hatte ^^
    fest steht: wenn ein und die gleiche datei nicht in mehreren verschiedenen pfaden (in unterschiedlicher) ausführung existiert, dann ist es egal, was man schreibt ^^

    bb



  • #include schrieb:

    wie lange programmiert ihr schon?

    Ist das ein Kriterium für die Glaubwürdigkeit? 😉

    Also: Die Version mit < > sucht nur in den Include-Pfaden (Standard-Header befinden sich auch dort).
    Die Angabe per " " sucht zusätzlich noch im lokalen Ordner.



  • MSDN schrieb:

    Syntax Form:
    Quoted form
    Action:
    This form instructs the preprocessor to look for include files in the same directory of the file that contains the #include statement, and then in the directories of any files that include (#include) that file. The preprocessor then searches along the path specified by the /I compiler option, then along paths specified by the INCLUDE environment variable.

    Syntax Form:
    Angle-bracket form
    Action:
    This form instructs the preprocessor to search for include files first along the path specified by the /I compiler option, then, when compiling from the command line, along the path specified by the INCLUDE environment variable.

    obwohl mein englisch noch immer nicht das beste ist, glaube ich hier doch, recht zu haben ^^

    bb



  • obwohl mein englisch noch immer nicht das beste ist, glaube ich hier doch, recht zu haben

    Hast du auch. 😉



  • Okay, wenn du meinst... Probiers doch einfach mal aus, du wirst Dateien im selben Ordner (zumindest unter MSVC++ 2008 Express) nicht mit < > einbinden können.



  • Um hier einen Glaubenswettstreit vorzubeugen...ich vermute mal, dass die Vorgehensweise des Präprozessors eine Frage der Implementierung des Herstellers ist. Genau so, wie wir schon unterschiede bei Kompilern gewohnt sind 😉



  • Nexus schrieb:

    Probiers doch einfach mal aus, du wirst Dateien im selben Ordner nicht mit < > einbinden können.

    verdammt : <
    hast recht - hab zwar noch die 2005er (teamsuite-edition) aber die will das auch nicht machen : <

    naja - aber theoretisch hätte ich recht gehabt 😉 und man kann nun ma nich immer alles haben 😉



  • Nexus schrieb:

    Okay, wenn du meinst... Probiers doch einfach mal aus, du wirst Dateien im selben Ordner (zumindest unter MSVC++ 2008 Express) nicht mit < > einbinden können.

    Naja. Wenn du die IDE richtig einstellst schon. 😉



  • Keine Ahnung, aber ich bin eigentlich von Standardeinstellungen ausgegangen. Es ist ja nicht so, dass man zuerst die halbe IDE umkonfiguriert, um statt " " auch < > schreiben zu können 🙂



  • Nexus schrieb:

    Keine Ahnung, aber ich bin eigentlich von Standardeinstellungen ausgegangen. Es ist ja nicht so, dass man zuerst die halbe IDE umkonfiguriert, um statt " " auch < > schreiben zu können 🙂

    Project->Porject Properties->Configurations Properites->C/C++->General und dann in Additional Directories die Pfade angeben.

    Naja. Das machst du bestimmt auch oft, wenn du mal ne lib benutzen willst, da kommst du um diese Methode nicht rum die Header bekannt zu machen. 😉



  • Ich inkludiere eigentlich immer die gleichen Verzeichnisse (ich wechsle meine Bibliotheken nicht häufig, bzw. benutze auch nicht viele verschiedene) und diese habe ich unter Extras -> Optionen -> Projekte und Projektmappen -> VC++-Verzeichnisse eingebunden. 😉



  • Nexus schrieb:

    Ich inkludiere eigentlich immer die gleichen Verzeichnisse (ich wechsle meine Bibliotheken nicht häufig, bzw. benutze auch nicht viele verschiedene) und diese habe ich unter Extras -> Optionen -> Projekte und Projektmappen -> VC++-Verzeichnisse eingebunden. 😉

    Jo, kommt auf s'gleiche raus. Nur, dass du dass dann einfach in jedem Projekt hast. 😉
    Aber wenn du es dort eingetragen hast, dann sollte es auch mit < > gehen. 😉


Anmelden zum Antworten