В <time.h>
в моей установке CYGWIN clock_gettime()
определяется под чеком #if defined(_POSIX_TIMERS)
. Теперь _POSIX_TIMERS определяется в моем <sys/features.h>
файле только в условиях -Как включить объявление clock_gettime() в <time.h> в CYGWIN при компиляции для -std = c90?
- Если
__rtems__
определена, или - Если соблюдено следующее условие -
#if !defined(__STRICT_ANSI__) || defined(__cplusplus) || __STDC_VERSION__ >= 199901L
Очевидно условие 2 может не выполняться в моем случае.
Есть (хорошо), как я могу установить __rtems__
или любой другой способ, которым я могу убедиться, что _POSIX_TIMERS включена в моем случае (т.е. -std = C90 -pedantic)?
Есть ли конкретная причина, по которой вы используете древний стандарт C90 вместо C99 или C11? Новые стандарты будут выполнять второе условие через '__STDC_VERSION__'. – sendaran
Чтобы увеличить переносимость. –
Если у вас нет определенной унаследованной платформы, для которой требуется C90, я бы сказал, что не использовать C99 является контрпродуктивным с точки зрения переносимости. C99 является значительно улучшенным стандартом по сравнению с C90 и имеет некоторые простые, но важные функции, которые улучшают переносимость, например фиксированные ширины целочисленных типов, которые очень полезны для всех, кто имеет дело с протоколами связи или встроенными системами. Ясно, что Cygwin хочет, чтобы вы использовали C99, поэтому работа вокруг него, скорее всего, вас укусит. '__ANYTHING__' зарезервирован для реализации C, подталкивая эти подходы к территории UB. – sendaran