2017-11-08 12 views
2

C++の静的初期化命令を使用して、C++ライブラリ内のいくつかのオブジェクトの構築を制御します。 GCCはinit_priorityを提供し、Microsoftはinit_seg()を提供しています。IBM XL C/C++はinit_priorityを提供していますか?

私はIBMのXL C/C++コンパイラと似たようなものを探していますが、私の検索結果はヒットしていません。コンパイラは、LinuxとAIXの両方で動作します。明らかにLinuxはこの機能を提供していますが、私はAIXランタイムのサポートについてはわかりません。

私の最初の質問は、AIXプラットフォームは初期設定の優先順位をサポートしていますか?

私の2番目の質問は、IBMのXL C/C++はソースコードを使って制御する方法ですか?

+0

xlcのドキュメントを掘り下げて答えを見つけられるはずです。あなたはそれを探してみましたか? –

+0

@JesperJuhl - * "tho [xlc docs]を検索しようとしましたか?" - はい、私はAIXとLinuxの両方のマニュアルを使っていますが、見つけられませんでした。私はそれが別の名前で行くのだろうか、または私はそれがないときに利用可能だと仮定した場合、私は思っています。 Linux xlCコンパイラは、それを持っている必要があるようです。 – jww

+0

初期化を1つのファイルに移動して、必要な順に並べ替えることはできますか? (適切な名前空間文などを使用して) – stark

答えて

1

IBM XL C/C++ for Linux V13.1.1以降では、初期化の優先順位を制御する方法があります。init_priority可変属性を使用して制御する方法の詳細は、​​を参照してください。オブジェクトレベルでの初期化の優先順位。

IBM XL C/C++ for AIXは、init_priorityをサポートしていませんが、-qpriorityおよび#pragma priorityという同じリンク単位内の.oファイル間のグローバル変数の初期化順序を制御する手段を提供します。それらのオプションの詳細はKnowledge Centerにあります。さらに、-qmkshrobj=priorityKnowledge Center)は、プログラムの起動時に共有オブジェクト(およびa.out)の初期化の順序を制御します(XL AIXはこの方法を使用しますが、XL Linuxは共有オブジェクトの初期化順序を決定するために依存性を使用します)。翻訳単位内の順序は宣言的な順序でなければなりません。さもなければ、まだ初期化されていない変数を参照する初期化を得ることができます。

関連する問題