Системные макроопределения

Идентификаторы, предназначенные для получения информации о характеристиках целевой системы и режимах работы компилятора на этапе компиляции.

Перечень основных системных макроопределений
Значения макроопределений _KPDA_VERSION и _KPDA_VERSION_STRING для различных редакций ЗОСРВ "Нейтрино"

Перечень основных системных макроопределений

Определение Заголовочный файл Описание
__BEGIN_DECLS <sys/platform.h> Начало фрагмента кода на языке С в приложении на языке С++.
__BIGENDIAN__ <sys/platform.h> Признак платформы big-endian (напр. ppcbe, mipsbe).
__CHAR_SIGNED__ <sys/platform.h> Признак использования знакового типа char на целевой платформе.
__CHAR_UNSIGNED__ <sys/platform.h> Признак использования беззнакового типа char на целевой платформе.
__END_DECLS <sys/platform.h> Конец фрагмента кода на языке С в приложении на языке С++.
__INT_BITS__ <sys/platform.h> Разрядность типа данных 'int'.
__LITTLEENDIAN__ <sys/platform.h> Признак платформы little-endian (напр. x86, armle-v7).
__LONG_BITS__ <sys/platform.h> Разрядность типа данных 'long'.
__PTR_BITS__ <sys/platform.h> Разрядность указателя 'void*'.
__OPTIMIZE__ <sys/platform.h> Признак компиляции с включённой оптимизацией.
__QNX__ - Признак компиляции для ОСРВ QNX4 или QNX Neutrino.
__QNXNTO__ - Признак компиляции для ОСРВ QNX Neutrino.
_NTO_VERSION <sys/neutrino.h> Версия QNX, умноженная на 100 (напр. 650 для QNX Neutrino 6.5).
__KPDA__ - Признак компиляции для ЗОСРВ "Нейтрино".
__KPDANTO__ - Признак компиляции для ЗОСРВ "Нейтрино".
_KPDA_VERSION <sys/platform.h> Версия компонентов ЗОСРВ "Нейтрино" в составе используемого Комплекта разработки.
_KPDA_VERSION_STRING <sys/platform.h> Версия компонентов ЗОСРВ "Нейтрино" в составе используемого Комплекта разработки (альтернативный формат).

Перечисленные макроопределения могут быть использованы для решения следующих задач:

Более подробная информация по некоторым из перечисленных выше макроопределений общего назначения: GCC Common Predefined Macros.


Note: Поддержка макроопределений __QNX__, __QNXNTO__ и _NTO_VERSION в Комплекте разработчика для ЗОСРВ "Нейтрино" предоставляется с целью обеспечения обратной совместимости при компиляции кода, изначально предназначенного для ОСРВ QNX (в т.ч. в процессе его переноса/адаптации под ЗОСРВ). В новых проектах для ЗОСРВ "Нейтрино", а также при адаптации ПО, разработанного для других UNIX-подобных ОС (GNU/Linux и т.д.), рекомендуется использовать макропределение _KPDA_VERSION.

Значения макроопределений _KPDA_VERSION и _KPDA_VERSION_STRING для различных редакций ЗОСРВ "Нейтрино"

Редакция _KPDA_VERSION _KPDA_VERSION_STRING
2016 и ранее не задано не задано
2018 20180500 "2018.05"
2020 20200900 "2020.09"


Note:
  • Последние две цифры в значении _KPDA_VERSION зарезервированы для версионирования компонентов системы в рамках одной редакции (например, в случае выпуска накопительных обновлений).
  • Макроопределения _KPDA_VERSION и _KPDA_VERSION_STRING находятся в файле <sys/kpdaversion.h>, который подключается автоматически через <sys/platform.h> или через стандартные заголовочные файлы (например, <stdio.h>) и не предназначен для подключения напрямую.

Для адаптации кода к различным версиям ЗОСРВ "Нейтрино" с помощью механизма условной компиляции могут использоваться соответствующие конструкции (пример):

#if !defined(__QNXNTO__) && !defined(_KPDA_VERSION)
/* Linux? */
#else
#if _KPDA_VERSION < 20180500 /* вариант: #if !defined(_KPDA_VERSION) */
/* QNX 6.5.0 или ЗОСРВ 2011/2013/2016 */
#else
#if _KPDA_VERSION == 20180500
/* ЗОСРВ 2018 */
#else
/* ЗОСРВ 2020 и далее */
#endif /* _KPDA_VERSION == 20180500 */
#endif /* _KPDA_VERSION < 20180500 */
#endif /* !defined(__QNXNTO__) && !defined(_KPDA_VERSION) */




Предыдущий раздел: Сборочное окружение