È la prima volta che lavoro con posix; Ho incluso:S_IFMT e S_IFREG undefined con -std = c11 o -std = gnu11
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
E ho questo frammento.
stat(pathname, &sb);
if ((sb.st_mode & S_IFMT) == S_IFREG) {
/* Handle regular file */
}
Ma usando GCC 4.8.3 su Gentoo se ho compilato con -std = C99 o C11 = -std o -std = gnu99 o -std = gnu11 ho ottenuto questo errore:
error: ‘S_ISFMT’ undeclared (first use in this function)
Se ometto -std = * non ho errori. Ma voglio anche tutte le caratteristiche di -std = c99 (come la parola chiave restrict o for (int i ;;) ecc ...) Come posso compilare il mio codice?
Questo è un po 'strano. Puoi per favore costruire un esempio di auto-contenuto minimo in modo da poter riprodurre questo problema sul mio sistema? Non ero in grado di riprodurlo altrimenti. – fuz