如何使用不同的浮点选项编译部分代码? 我使用英特尔编译器优化一些C++代码,我需要在代码的一些部分中使用不同的编译选项,在一个源文件中。

如何使用不同的浮点选项编译部分代码? 我使用英特尔编译器优化一些C++代码,我需要在代码的一些部分中使用不同的编译选项,在一个源文件中。,c++,pragma,icc,C++,Pragma,Icc,我知道pragma-pack指令可以在代码内部更改结构成员的对齐方式,但我想知道是否有其他用于其他选项的指令 在我的例子中,我用F/FP:精确的选项编译我的代码,但是我想使用/FP:在代码的某些部分中很快。< /P> < p>您可以使用MSVC和英特尔®C++编译器支持的特定函数选择一些浮点选项。 但是,请注意链接文档中给出的重要警告: float_控件pragma与/fp的行为不同 编译器选项。float_控件pragma仅控制 浮点行为。它必须与fp_合同和 fenv_访问pragmas以重

我知道pragma-pack指令可以在代码内部更改结构成员的对齐方式,但我想知道是否有其他用于其他选项的指令

在我的例子中,我用F/FP:精确的选项编译我的代码,但是我想使用/FP:在代码的某些部分中很快。< /P> < p>您可以使用MSVC和英特尔®C++编译器支持的特定函数选择一些浮点选项。 但是,请注意链接文档中给出的重要警告:

float_控件pragma与/fp的行为不同 编译器选项。float_控件pragma仅控制 浮点行为。它必须与fp_合同和 fenv_访问pragmas以重新创建/fp编译器选项

使用此指令和相关的pragma指令将允许您使用不同的选项在单个翻译单元中编译代码段

根据引用文本下方链接文档中所示的表格,/fp:precise和/fp:fast之间的唯一区别是由float\u control pragma控制的,但您需要其他控件从/fp:strict切换,因此下面的代码允许给定源文件中的一个函数使用fast选项:

pragma float\控制精确、关闭、按下//保存当前设置并关闭/fp:precision 双快速浮动双x { 双y=x*x-1; //执行操作:生成的代码将使用/fp:fast 返回y; } pragma float\u controlpop//恢复文件的默认设置
请注意,pragma pack更改了结构布局,即它实质上更改了结构定义。如果在某些翻译单元中使用它,而在其他共享该结构实例访问权限的单元中不使用,则代码将无法工作。每个编译单元都是单独编译的。生成的对象文件链接在一起。你可以为每个编译单元使用不同的编译器标志。这个问题太广泛,缺乏自己的研究。你说我想知道其他选项是否有其他指令。显而易见的答案是,没错。具体来说,可以查看英特尔编译器的文档。