重要なオブジェクトの初期化を確実にするために、関数が最初に呼び出されるようにしようとしています。しかし、私はどのようにinit_seg
が使用されている/呼び出されていると思われるのか混乱しています。init_segを使用して初期化関数を呼び出す
たとえば、msdnのドキュメントから、次のものが最初に呼び出されるように見えます。
#pragma init_seg(".CRT$XCC")
static void InitializeStuff()
{
printf("InitializeStuff\n");
}
しかし、その関数は明示的には自動的に呼び出されません(もちろん明示的に呼び出さない限り)。
他の実行コードの前に関数が呼び出されるようにするには、どうすればinit_setを使用できますか?
'main()'の前に呼び出されますか?それだけでいいの? – Nawaz
私はそれが私のアプリケーションのために呼び出される最初のものであることを確認したいと思います。私はこれをボス・ペルソンの答えとの質問http://stackoverflow.com/questions/10198675/compiler-specific-memory-initializationから今日早くに提案しました。 – chadb
関数名を使用する['init_seg'](https://msdn.microsoft.com/en-us/library/7977wcck.aspx)の4番目の(?)バージョンを使用する必要があると思います:' #pragma init_seg ( ".CRT $ XCU"、 "InitializeStuff") 'となります。 – jww