/QIfist (抑制 _ftol)
更新:2007 年 11 月
在必須從浮點型別轉換為整數型別時,抑制 Helper 函式 _ftol。
/QIfist
備註
注意事項: |
---|
/QIfist 僅供以 x86 為目標的編譯器使用,這個編譯器選項不提供以 x64 或 Itanium 為目標的編譯器使用。 |
除了從浮點型別轉換為整數型別之外,_ftol 函式也會透過設定控制字的第 10 和 11 位元,以確保浮點單位 (FPU) 的捨入模式是趨向於零,這樣可以保證從浮點型別到整數型別的轉換會依據 ANSI C 標準 (捨去數字的小數部分) 的描述進行。使用 /QIfist 時,此一保證即不再適用。捨入模式必須為 Intel 參考手冊中所載以下四種模式中的某一種:
趨向最接近者捨入 (如果等距離則為偶數)
趨向負無限大捨入
趨向正無限大捨入
趨向零捨入
您可以使用 _control87, _controlfp, __control87_2 C Run-Time 函式,修改 FPU 的捨入行為。FPU 的預設捨入模式為「趨向最接近者捨入」。使用 /QIfist 可以提升應用程式的效能,但是也有風險。在生產環境中信賴以 /QIfist 建置 (Build) 的程式碼之前,您應該先徹底測試程式碼中受捨入模式影響的各個部分。
/arch (最小 CPU 架構) 和 /QIfist 不能用於同一個編譯中。
注意事項: |
---|
/QIfist 並非預設運作,因為捨入位元也會影響浮點而進行浮點捨入 (這種捨入作業在每次計算之後都會進行),所以設定 C-style (趨向零) 捨入的旗標時,浮點計算可能會不同;如果程式碼依賴預期截斷浮點數小數部分的行為而運作,就不應該使用 /QIfist。如果不確定,就不要使用 /QIfist。 |
在 Visual C++ 2005 中,/QIfist 已遭取代。編譯器已大幅提升將浮點 (Float) 轉換成 int 的速度。如需詳細資訊,請參閱 Visual C++ 2005 中已被取代的編譯器選項。
若要在 Visual Studio 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。如需詳細資訊,請參閱 HOW TO:開啟專案屬性頁。
按一下 [C/C++] 資料夾。
按一下 [命令列] 屬性頁。
在 [其他選項] 方塊中,輸入編譯器選項。
若要以程式方式設定這個編譯器選項
- 請參閱 AdditionalOptions。