編譯器:VC++ 2013 模式:發行編譯器是否允許進行這樣的優化?
故事:我瞭解了IAT掛鉤。我決定在ExitProcess()上練習。只要替換函數返回,我就會崩潰。爲什麼?因爲不知何故,編譯器決定認爲ExitProcess()後面的內容永遠不會執行,因此代碼不會生成。例如,當我把ExitProcess()放在if語句中時,一切都很順利。那麼這是如何有效的優化? ExitProcess()在DLL中,所以編譯器甚至無法進行任何鏈接時優化(如果需要的話)。它只是奇蹟般地假定ExitProcess()永遠不會返回。
我認爲編譯器不應該做這樣的事情。
好的,這是有道理的。 VC++是否使用某些平臺特定的符號來表示這些函數? – NFRCR
我真的不知道。它們同樣可能只是在編譯器本身內部特別包含它。你必須看看我想的標題。 – Puppy