feature_test_macros(7) Miscellaneous Information Manual feature_test_macros - . : . (cc -DMACRO=value) . . _GNU_SOURCE ( POSIX ): #include #define _GNU_SOURCE #include . . . : . . SYNOPSIS ( acct(2)): #include int acct(const char *filename); glibc ( feature_test_macros(7)): acct(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500) || acct(2) : #define _BSD_SOURCE #define _XOPEN_SOURCE /* or any value < 500 */ : cc -D_BSD_SOURCE cc -D_XOPEN_SOURCE # Or any value < 500 SYNOPSIS . ( readahead(2)): #define _GNU_SOURCE #define _FILE_OFFSET_BITS 64 #include ssize_t readahead(int fd, off_t *offset, size_t count); . glibc glibc 2.x x > 0. : o _POSIX_C_SOURCE ( POSIX.1) _XOPEN_SOURCE ( SUS) _GNU_SOURCE ( GNU / ) _DEFAULT_SOURCE ( ). o . SYNOPSIS . . o _XOPEN_SOURCE 600 _POSIX_C_SOURCE 200112L . _POSIX_C_SOURCE >= 200112L SYNOPSIS : _XOPEN_SOURCE >= 600 o _XOPEN_SOURCE 700 _POSIX_C_SOURCE 200809L . _POSIX_C_SOURCE >= 200809L SYNOPSIS : _XOPEN_SOURCE >= 700 glibc : __STRICT_ANSI__ C ISO. gcc(1) -std=c99 -ansi. _POSIX_C_SOURCE : o 1 POSIX.1-1990 ISO C (1990). o 2 POSIX.2-1992. o 199309L POSIX.1b ( ). o 199506L POSIX.1c (). o ( glibc 2.3.3) 200112L POSIX.1-2001 ( XSI). C95 ( glibc 2.12) C99 ( glibc 2.10) ( _ISOC99_SOURCE). o ( glibc 2.10) 200809L POSIX.1-2008 ( XSI). _POSIX_SOURCE _POSIX_C_SOURCE 1. . _XOPEN_SOURCE : o POSIX.1 POSIX.2 XPG4. o 500 SUSv2 (UNIX 98). o ( glibc 2.2) 600 SUSv3 (UNIX 03 POSIX.1-2001 XSI) C99. o ( glibc 2.10) 700 SUSv4 ( POSIX.1-2008 XSI). __STRICT_ANSI__ _XOPEN_SOURCE 500 _POSIX_SOURCE _POSIX_C_SOURCE : o _POSIX_SOURCE 1. o _POSIX_C_SOURCE _XOPEN_SOURCE: _XOPEN_SOURCE < 500 _POSIX_C_SOURCE 2. 500 <= _XOPEN_SOURCE < 600 _POSIX_C_SOURCE 199506L. 600 <= _XOPEN_SOURCE < 700 _POSIX_C_SOURCE 200112L. 700 <= _XOPEN_SOURCE ( glibc 2.10) _POSIX_C_SOURCE 200809L. _XOPEN_SOURCE 500 _XOPEN_SOURCE_EXTENDED. _XOPEN_SOURCE_EXTENDED _XOPEN_SOURCE UNIX XPG4v2 (SUSv1) (UNIX 95). _XOPEN_SOURCE 500 _XOPEN_SOURCE_EXTENDED. _XOPEN_SOURCE_EXTENDED . _XOPEN_SOURCE 500 _XOPEN_SOURCE_EXTENDED () SYNOPSIS . _ISOC99_SOURCE ( glibc 2.1.3) ISO C99. ISO C (1990) 1 ("C95"). ( C95 .) C -std=c99 . _ISOC11_SOURCE ( glibc 2.16) ISO C11. C99 C95 ( _ISOC99_SOURCE). C -std=c11 . _ISOC23_SOURCE ( glibc 2.40) ISO C23. glibc 2.31 _ISOC2X_SOURCE ( C23 ). glibc . _ISOC23_SOURCE C11 C99 C95. C -std=c23 . _LARGEFILE64_SOURCE LFS ( ) " " UNIX . ( .) ( ) "64" ( off64_t off_t lseek64() lseek() .). _FILE_OFFSET_BITS=64. _LARGEFILE_SOURCE ( fseeko(3) ftello(3)) (fseek(3) ftell(3)) long . _XOPEN_SOURCE 500. _XOPEN_SOURCE _FILE_OFFSET_BITS 64 . _FILE_OFFSET_BITS 64 32 / 64 . / ( 2 ) 32 . copy_file_range(2) 64 . ( .) 64 2 . _TIME_BITS 64 time_t(3type) 64 2038. _FILE_OFFSET_BITS . glibc 2.34. _BSD_SOURCE ( glibc 2.20) BSD. glibc 2.18 BSD _SVID_SOURCE _POSIX_SOURCE _POSIX_C_SOURCE _XOPEN_SOURCE _XOPEN_SOURCE_EXTENDED _GNU_SOURCE BSD. glibc 2.19 _BSD_SOURCE BSD . glibc 2.20 . _DEFAULT_SOURCE ( _DEFAULT_SOURCE ). _DEFAULT_SOURCE . _BSD_SOURCE glibc 2.19 _DEFAULT_SOURCE glibc 2.20 _BSD_SOURCE _DEFAULT_SOURCE. _SVID_SOURCE ( glibc 2.20) System V. (SVID == System V standards(7).) glibc 2.20 _BSD_SOURCE. _DEFAULT_SOURCE ( glibc 2.19) "" "" ( cc -std=c99). _DEFAULT_SOURCE "" . "" POSIX.1-2008 ISO C99 BSD System V. glibc 2.19 : cc -D_BSD_SOURCE -D_SVID_SOURCE -D_POSIX_C_SOURCE=200809 _ATFILE_SOURCE ( glibc 2.4) "at" openat(2). glibc 2.10 _POSIX_C_SOURCE 200809L. _GNU_SOURCE ( ) _ATFILE_SOURCE _LARGEFILE64_SOURCE _ISOC99_SOURCE _XOPEN_SOURCE_EXTENDED _POSIX_SOURCE _POSIX_C_SOURCE 200809L (200112L glibc 2.10 199506L glibc 2.5 199309L glibc 2.1) _XOPEN_SOURCE 700 (600 glibc 2.10 500 glibc 2.2). GNU. glibc 2.19 _GNU_SOURCE _DEFAULT_SOURCE . glibc 2.20 _GNU_SOURCE _BSD_SOURCE _SVID_SOURCE . _REENTRANT C . ( C .) glibc . glibc glibc 2.3 _REENTRANT _POSIX_C_SOURCE 199606L . _REENTRANT . glibc 2.25 _REENTRANT _POSIX_C_SOURCE 199606L. POSIX ( _POSIX_C_SOURCE _XOPEN_SOURCE _DEFAULT_SOURCE _GNU_SOURCE) _REENTRANT . cc -pthread. _THREAD_SAFE _REENTRANT () . _FORTIFY_SOURCE ( glibc 2.3.4) ( memcpy(3) memset(3) stpcpy(3) strcpy(3) strncpy(3) strcat(3) strncat(3) sprintf(3) snprintf(3) vsprintf(3) vsnprintf(3) gets(3) ). open(2) mode O_CREAT. . _FORTIFY_SOURCE 1 1 (gcc -O1) . _FORTIFY_SOURCE 2 . ( ) . _FORTIFY_SOURCE 3 . malloc(3) . gcc 4.0 clang 2.6. _FORTIFY_SOURCE 3 gcc 12.0 clang 9.0 glibc 2.33 . : _BSD_SOURCE ( glibc 2.19 ) _SVID_SOURCE ( glibc 2.19 ) _DEFAULT_SOURCE ( glibc 2.19) _POSIX_SOURCE _POSIX_C_SOURCE=200809L (200112L glibc 2.10 199506L glibc 2.4 199309L glibc 2.1). __STRICT_ANSI__ _ISOC99_SOURCE _ISOC11_SOURCE ( glibc 2.18) _ISOC23_SOURCE ( glibc 2.40) _POSIX_SOURCE _POSIX_C_SOURCE _XOPEN_SOURCE _XOPEN_SOURCE_EXTENDED ( glibc 2.11 ) _BSD_SOURCE ( glibc 2.19 ) _SVID_SOURCE ( glibc 2.19 ) _BSD_SOURCE _SVID_SOURCE _DEFAULT_SOURCE . _POSIX_SOURCE _POSIX_C_SOURCE __STRICT_ANSI__ _XOPEN_SOURCE 500 o _POSIX_SOURCE 1 o _POSIX_C_SOURCE : o 2 _XOPEN_SOURCE 500 o 199506L _XOPEN_SOURCE 500 600 o ( glibc 2.4) 200112L _XOPEN_SOURCE 600 700. o ( glibc 2.10) 200809L _XOPEN_SOURCE 700. o glibc 200112L 200809L _POSIX_C_SOURCE glibc. o _XOPEN_SOURCE _POSIX_C_SOURCE glibc: 199506L glibc 2.4 200112L glibc 2.4 glibc 2.9 200809L glibc 2.10. . POSIX.1 _POSIX_C_SOURCE _POSIX_SOURCE _XOPEN_SOURCE. _FILE_OFFSET_BITS . _BSD_SOURCE _SVID_SOURCE _DEFAULT_SOURCE _ATFILE_SOURCE _GNU_SOURCE _FORTIFY_SOURCE _REENTRANT _THREAD_SAFE glibc. _XOPEN_SOURCE_EXTENDED XPG4v2 ( SUSv1) SUSv2 . Linux/glibc. . : . glibc . ( __USE_MISC). : ( ) . glibc . glibc 2.10 : $ cc ftm.c $ ./a.out _POSIX_SOURCE defined _POSIX_C_SOURCE defined: 200809L _BSD_SOURCE defined _SVID_SOURCE defined _ATFILE_SOURCE defined $ cc -D_XOPEN_SOURCE=500 ftm.c $ ./a.out _POSIX_SOURCE defined _POSIX_C_SOURCE defined: 199506L _XOPEN_SOURCE defined: 500 $ cc -D_GNU_SOURCE ftm.c $ ./a.out _POSIX_SOURCE defined _POSIX_C_SOURCE defined: 200809L _ISOC99_SOURCE defined _XOPEN_SOURCE defined: 700 _XOPEN_SOURCE_EXTENDED defined _LARGEFILE64_SOURCE defined _BSD_SOURCE defined _SVID_SOURCE defined _ATFILE_SOURCE defined _GNU_SOURCE defined /* ftm.c */ #include #include #include #include int main(int argc, char *argv[]) { #ifdef _POSIX_SOURCE printf("_POSIX_SOURCE defined\n"); #endif #ifdef _POSIX_C_SOURCE printf("_POSIX_C_SOURCE defined: %jdL\n", (intmax_t) _POSIX_C_SOURCE); #endif #ifdef _ISOC99_SOURCE printf("_ISOC99_SOURCE defined\n"); #endif #ifdef _ISOC11_SOURCE printf("_ISOC11_SOURCE defined\n"); #endif #ifdef _ISOC23_SOURCE printf("_ISOC23_SOURCE defined\n"); #endif #ifdef _XOPEN_SOURCE printf("_XOPEN_SOURCE defined: %d\n", _XOPEN_SOURCE); #endif #ifdef _XOPEN_SOURCE_EXTENDED printf("_XOPEN_SOURCE_EXTENDED defined\n"); #endif #ifdef _LARGEFILE64_SOURCE printf("_LARGEFILE64_SOURCE defined\n"); #endif #ifdef _FILE_OFFSET_BITS printf("_FILE_OFFSET_BITS defined: %d\n", _FILE_OFFSET_BITS); #endif #ifdef _TIME_BITS printf("_TIME_BITS defined: %d\n", _TIME_BITS); #endif #ifdef _BSD_SOURCE printf("_BSD_SOURCE defined\n"); #endif #ifdef _SVID_SOURCE printf("_SVID_SOURCE defined\n"); #endif #ifdef _DEFAULT_SOURCE printf("_DEFAULT_SOURCE defined\n"); #endif #ifdef _ATFILE_SOURCE printf("_ATFILE_SOURCE defined\n"); #endif #ifdef _GNU_SOURCE printf("_GNU_SOURCE defined\n"); #endif #ifdef _REENTRANT printf("_REENTRANT defined\n"); #endif #ifdef _THREAD_SAFE printf("_THREAD_SAFE defined\n"); #endif #ifdef _FORTIFY_SOURCE printf("_FORTIFY_SOURCE defined\n"); #endif exit(EXIT_SUCCESS); } libc(7) standards(7) system_data_types(7) "Feature Test Macros" info libc. /usr/include/features.h 3 . . : . 6.18 10 2026 feature_test_macros(7)