Вы должны указать заголовкам, что вы хотите расширения POSIX. В эти дни я использую:
#if __STDC_VERSION__ >= 199901L
#define _XOPEN_SOURCE 600
#else
#define _XOPEN_SOURCE 500
#endif /* __STDC_VERSION__ */
Если я компилирую с -std=c89
, это дает правильную версию POSIX; если вы компилируете с -std=c89
, это даст правильную версию POSIX. Я использую это в Solaris 9 и 10, MacOS X (10.4.x, 10.5.x), HP-UX 11.x, Linux (RHEL4 и 5, SuSE 9 и 10) и AIX 5.x и 6.x - AFAICR пока без проблем.
Этот раздел должен появиться до того, как будут включены какие-либо системные заголовки (в вашем собственном заголовке или в каждом исходном файле), или вам нужно добиться того же эффекта с -D_XOPEN_SOURCE=600
в командной строке компилятора или каким-либо другим подобным механизмом.