"chdir" wird vom Compiler nicht erkannt



  • Hallo,

    ich erstelle ein Programm, das unter Windows und Linux laufen muss. Benötigt wird außerdem ein Verzeichniswechsel (z.B. über "chdir"). Ich habe ein Minimalbeispiel erzeugt, das unter Windows UND Linux funktioniert. Allerdings lifert der GNU-Compiler unter Linux bei Ausführen des Befehls
    gcc -W -Wall test.c -o test
    die Fehlermeldung
    warning: implicit declaration of function `chdir'

    Dennoch funktioniert das Programm, was mir nicht einleuchtet. Hier folgt das Beispiel:

    #ifdef __unix__
       #include <sys/types.h>
       #include <sys/stat.h>
    #elif __WIN32__ || _MS_DOS_
       #include <dir.h>
    #else
        #include <direct.h>  /* Visual C++ */
    #endif
    
    #include <stdio.h>
    
    int main(void) {
    
    FILE* f;
    
    chdir("Test");
    
    f = fopen("test.dat","w");
    
    chdir("..");
    
    fclose(f);
    
    return 0;
    }
    

    Die FILE-Operationen habe ich benutzt, um zu überprüfen, ob der Verzeichniswechsel durchgeführt worden ist. Und tatsächlich erscheint im Verzeichnis /Test die Datei test.dat.

    Ich wäre für eure Hilfe sehr dankbar. Ich weiß nicht, wo der Fehler liegt.

    Viele Grüße,
    Etienne



  • Du bekommst ja keine Fehlermeldung sondern nur eine Warnung.

    Wenn du mal nach man chdir googelst findest du Beschreibungen. Unter Unix musst du für chdir <unistd.h> einbinden. Probier mal, ob es dann ohne Warnung geht.

    Gruß

    Christian



  • Danke!! Top! Super Hilfe.
    Mit der eingebundenen Datei unistd.h entfällt die Warnung.

    Vielen Dank und beste Grüße,
    Etienne


Anmelden zum Antworten