Ответ Сета правильный.Если это не работает для вас, есть также возможность передать опцию компилятора -std = gnu99 в g ++ (он автоматически определяет все распространенные тестовые макросы).
Обязательно добавьте все опции в концекомандной строки, потому что более поздние опции перезаписывают более новые!
Вот требования тестового макроса для GNU glibc (из manpage):
Since glibc 2.12:
_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED ||
_POSIX_C_SOURCE >= 200809L
Before glibc 2.12:
_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
Я не знаю, почему POSIX> =Требуется 200809L, поскольку на странице руководства написано, что он соответствует POSIX.1-2001.