我試圖確保一個函數將被程序首先調用,以確保關鍵對象的初始化。然而,我很困惑如何init_seg
被假定爲被使用/被調用。使用init_seg調用初始化函數
例如,從msdn的文檔看起來好像下面是第一個被調用的。
#pragma init_seg(".CRT$XCC")
static void InitializeStuff()
{
printf("InitializeStuff\n");
}
但是,似乎並不是這種情況,因爲該函數顯然不會自動調用(除非我明確地稱它爲當然)。
如何使用init_set確保函數在其他執行代碼之前被調用?
你想在'main()'之前調用它嗎?這就是你想要的嗎? – Nawaz 2012-04-18 08:51:26
我想確保它是我的應用程序的第一件事。我在今天早些時候從Bo Persson的答案提出了這個問題http://stackoverflow.com/questions/10198675/compiler-specific-memory-initialization。 – chadb 2012-04-18 08:55:18
我認爲你需要使用['init_seg'](https://msdn.microsoft.com/en-us/library/7977wcck.aspx)的第四個(?)版本,它使用函數名稱:'#pragma init_seg (「.CRT $ XCU」,「InitializeStuff」)。 – jww 2017-03-20 05:05:43