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 DankEDIT: 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 >= 200112LEins der Makros musst Du definieren.
-
Vielen Dank, da hätte ich lange im Code suchen können :).