
エントリーの編集

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
C++のグローバル静的変数の初期化とattribute/declspecによる関数の呼び出し順序の制御
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
C++のグローバル静的変数の初期化とattribute/declspecによる関数の呼び出し順序の制御
初めに C++ではグローバルな静的変数が宣言されているとmainの前に初期化されます。 GCCには__attribute... 初めに C++ではグローバルな静的変数が宣言されているとmainの前に初期化されます。 GCCには__attribute__((constructor))という拡張があり、この属性を関数の前に付けるとその関数がmainの前に呼ばれます。 それでは両方使うとどういう順序でなるのか? C++的には未定義ですが実験してみました。 単一ファイルにおける順序 #include <stdio.h> static struct X1 { X1() { puts("X1 cstr"); } } x1; static void __attribute__((constructor)) initMain() { puts("initMain"); } static struct X2 { X2() { puts("X2 cstr"); } } x2; int main() { puts("main"); }