Предоставляет ли IBM XL C/C++ init_priority?

Мы используем статический порядок инициализации C++ для управления созданием нескольких объектов в библиотеке C++. GCC предлагает init_priority и Microsoft предлагает init_seg(),

Я ищу подобное с компилятором IBM XL C/C++, но мои результаты поиска не показывают полезных хитов. Компилятор работает как в Linux, так и в AIX. Очевидно, что Linux предлагает эту функцию, но я не уверен в поддержке AIX во время выполнения.

Мой первый вопрос: поддерживает ли платформа AIX приоритеты инициализации?

Мой второй вопрос: предлагает ли IBM XL C/C++ способ управления им с помощью исходного кода?

1 ответ

Решение

IBM XL C/C++ для Linux V13.1.1 и выше предлагает способ управления приоритетами инициализации. Более подробную информацию о том, как управлять им через init_priority переменный атрибут, аналогичный GCC, который назначает статические приоритеты инициализации на уровне объекта.

IBM XL C/C++ для AIX не поддерживает init_priority но он предлагает способ управления порядком инициализации глобальных переменных между файлами.o в пределах одного блока ссылок с помощью -qpriority а также #pragma priority, Подробную информацию об этих опциях можно найти в Центре знаний. К тому же, -qmkshrobj=priority ( Центр знаний) контролирует порядок инициализации общих объектов (и a.out) при запуске программы (XL AIX использует этот метод, тогда как XL Linux использует зависимость для определения порядка инициализации общих объектов). Порядок в модуле перевода должен быть в декларативном порядке, иначе вы можете получить инициализацию, ссылаясь на переменную, которая еще не была инициализирована.

Другие вопросы по тегам