Nothing should ever #include <features.h> except the prologue of an installed header file, and then only for the purpose of testing __USE_* macros. If you want access to the various other __ macros (even ones that are actually defined in features.h), you should #include <sys/cdefs.h>.