有什麼辦法可以告訴編譯器,你知道某個特定變量的值必須在代碼中某個特定位置的特定範圍內,才能幫助編譯器進行優化?我正在編寫一個庫,它可以在編譯時知道一些變量的範圍,如果能夠以某種方式將此信息傳遞給編譯器以便編譯器可以使用它來進行優化,那麼它會很好用。我想增加對任何編譯器的支持,即使這些編譯器無法爲所有編譯器工作(這聽起來像某些編譯器可以作爲擴展的東西,但我沒有發現任何)。我知道我可以寫這樣的東西:如何將範圍信息傳遞給C++編譯器?
if(x < COMPILE_TIME_MIN or x > COMPILE_TIME_MAX)
return;
// compiler will assume for code below that x is in range COMPILE_TIME_MIN..COMPILE_TIME_MAX
但這是一個運行時檢查。也許有一些技巧讓編譯器做出範圍的假設,而沒有這樣的檢查?
你有什麼想法可以幫助哪種類型的優化? –
如果使用模板,實際上可以編譯時檢查編譯時是否知道所有的信息。 –
您正在使用「編譯器」這個短語,但您永遠不會告訴我們哪一個。推測你的意思是某種版本的g ++或Visual C++,但這並不清楚。標準並沒有解決一般的優化問題,所以你可能在這裏做的任何事情都是特定於實現的。 –