簡體   English   中英

如何使用不同的浮點選項編譯部分代碼?

[英]How to compile parts of code with different floating-point options?

我正在使用英特爾編譯器優化一些 C++ 代碼,我需要在單個源文件中的某些代碼部分使用不同的編譯選項。

我知道#pragma pack指令可以更改結構成員的 alignment 內部代碼,但我想知道是否還有其他選項的其他指令。

就我而言,我正在使用/fp:precise選項編譯我的代碼,但我想在代碼的某些部分使用/fp:fast

您可以使用#pragma float_controlMSVC和英特爾® C++ 編譯器都支持)為特定函數select一些浮點選項。

但是,請注意鏈接文檔中給出的重要警告:

float_control pragma 與 /fp 編譯器選項的行為不同。 float_control pragma 僅控制部分浮點行為。 它必須與 fp_contract 和 fenv_access pragma 結合使用以重新創建/fp編譯器選項...

使用這個和相關的#pragma指令允許您在具有不同選項的單個翻譯單元中編譯代碼段。

根據鏈接文檔中顯示的表格(就在引用文本下方), /fp:precise/fp:fast之間的唯一區別是由float_control pragma 控制(但您需要其他人從/fp:strict切換) ,因此如下代碼將允許給定源文件中的一個 function 使用fast選項:

#pragma float_control( precise, off, push ) // Save current setting and turn off /fp:precise
double FastFloatFunc(double x)
{
    double y = x * (x - 1);
    // Do something: Generated code will use /fp:fast
    return y;
}
#pragma float_control(pop) // Restore file's default settings

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM