Seems POSIX is odd and unistd also defines SEEK_SET if stdio.h This simply follows the pattern several other C libraries take of setting these macros to the same values in stdio if that header is not included.