Идентификаторы, предназначенные для получения информации о характеристиках целевой системы и режимах работы компилятора на этапе компиляции.
Определение | Заголовочный файл | Описание |
---|---|---|
__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). ПРИМЕЧАНИЕ: используется только для обратной совместимости c операционной системой QNX Neutrino (для ЗОСРВ Нейтрино всех редакций значение также установлено в 650 ). |
__KPDA__ | - | Признак компиляции для ЗОСРВ "Нейтрино". |
__KPDANTO__ | - | Признак компиляции для ЗОСРВ "Нейтрино". |
_KPDA_VERSION | <sys/platform.h> | Версия компонентов ЗОСРВ "Нейтрино" в составе используемого Комплекта разработки. |
_KPDA_VERSION_STRING | <sys/platform.h> | Версия компонентов ЗОСРВ "Нейтрино" в составе используемого Комплекта разработки (альтернативный формат). |
Перечисленные макроопределения могут быть использованы для решения следующих задач:
Более подробная информация по некоторым из перечисленных выше макроопределений общего назначения: GCC Common Predefined Macros.
Поддержка макроопределений __QNX__ , __QNXNTO__ и _NTO_VERSION в Комплекте разработчика для ЗОСРВ "Нейтрино" предоставляется с целью обеспечения обратной совместимости при компиляции кода, изначально предназначенного для ОСРВ QNX (в т.ч. в процессе его переноса/адаптации под ЗОСРВ). В новых проектах для ЗОСРВ "Нейтрино", а также при адаптации ПО, разработанного для других UNIX-подобных ОС (GNU/Linux и т.д.), рекомендуется использовать макропределение _KPDA_VERSION . |
Редакция | _KPDA_VERSION | _KPDA_VERSION_STRING |
---|---|---|
2016 и ранее | не задано | не задано |
2018 | 20180500 | "18.05" |
2020 | 20200900 | "20.09" |
2021 | 20211100 | "21.11" |
|
Для адаптации кода к различным версиям ЗОСРВ "Нейтрино" с помощью механизма условной компиляции могут использоваться соответствующие конструкции (пример):
#if !defined(__QNXNTO__) && !defined(_KPDA_VERSION)/* Linux? */#elif _KPDA_VERSION < 20180500 /* вариант: #if !defined(_KPDA_VERSION) *//* QNX 6.5.0 или ЗОСРВ "Нейтрино" ред. 2011/2013/2016 */#elif _KPDA_VERSION == 20180500/* ЗОСРВ "Нейтрино" ред. 2018 */#else/* ЗОСРВ "Нейтрино" ред. 2020 и далее */#endif
Предыдущий раздел: Сборочное окружение