3
我正在優化整個代碼,但我不希望爲了調試目的而優化某個功能。有沒有辦法在gcc 3.4+編譯器上做到這一點?如何防止功能被優化
我正在優化整個代碼,但我不希望爲了調試目的而優化某個功能。有沒有辦法在gcc 3.4+編譯器上做到這一點?如何防止功能被優化
最簡單的方法,將函數放在自己的編譯單元中,編譯沒有優化標誌的函數。
最新版本的GCC(4.4或以上版本我認爲)要控制每個功能優化的屬性,使用
__attribute__((optimize(0)))
的功能禁用優化
編譯器通常__do not__出示擔保的是調試/發行版本二進制文件具有相同的ABI或填充等等。因此,假設這會起作用(儘管它可能適用於您的編譯器)並不安全(通常情況下)。 – 2009-09-29 17:48:26
你有沒有例子?我知道microsoft使用不同的C運行庫來執行調試可執行文件,但是保證了跨模塊函數調用和結構對齊的互操作性。就我所知,gcc在所有制度中都會產生100%兼容的輸出。 很顯然,像結構對齊和ABIs之類的東西超出了語言標準領域,所以編譯器在生成調試輸出時不會*承認它們。但這讓我覺得更像一個迂腐點,而不是一個實用的點。 – 2009-09-29 19:03:27
OP詢問gcc和gcc沒有像不同的「調試」和「發佈」ABI一樣的廢話。 – 2011-05-19 15:07:28