Compilerwarnung: -Wimplicit-function-declaration



  • Hallo,

    ich habe jetzt lange gerätselt aber ich komm nicht drauf, warum mir hier eine Implicit-function-declaration-Warnung angezeigt wird:

    #include <sys/stat.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <string.h>
    #include <unistd.h>
    #include <dirent.h>
    #include <stdlib.h>
    
    static void* run(void * id) {
    	long tid = (long) id;
    	//rekursives Durchlaufen des angegebenen Verzeichnisses
    	DIR *dirp = opendir("fest");
    	struct dirent *d = readdir(dirp);
    	while(d != NULL) {
    		struct stat buf;
    		char dirname[256];
    		strcpy(dirname,"fest");
    		strcat(dirname,"/");
    		strcat(dirname,d->d_name);
    		lstat(dirname,&buf);
    		if(S_ISDIR(buf.st_mode)) {
    			if(strncmp(d->d_name,".",1) != 0)
    				;
    		}
    		d = readdir(dirp);
    	}
    }
    
    int main(int argc, char** argv) {
    	exit(EXIT_SUCCESS);
    }
    

    Die Warnung wird angezeigt für die Funktion 'lstat'. Ersetze ich 'lstat' durch 'stat', so erhalte ich keine Warnung.

    Weiß jemand Rat?
    Vielen Dank 🙂

    EDIT: Fehlerbehandlung ist der Übersicht halber weggelassen ;).
    Nochmal Edit: ich übersetze mit gcc -std=c99 file.c -o output



  • man lstat schrieb:

    Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

    lstat():
    _BSD_SOURCE || _XOPEN_SOURCE >= 500 ||
    _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
    || /* Since glibc 2.10: */ _POSIX_C_SOURCE >= 200112L

    Eins der Makros musst Du definieren.



  • Vielen Dank, da hätte ich lange im Code suchen können :).


Anmelden zum Antworten