C++ C+中是否存在FENV#u ACCESS pragma+;11岁及以上?

C++ C+中是否存在FENV#u ACCESS pragma+;11岁及以上?,c++,pragma,fenv,C++,Pragma,Fenv,在阅读一份针对的错误报告时,我遇到了一个: 设置舍入模式而不在上使用pragma STDC FENV_访问将调用未定义的行为。见C117.6.1/2。(这个实用主义在C++中不存在,所以不可用,但这不是我们的错……) 这真的真的不存在于C++中,渲染 不可用吗?我曾尝试在C++11标准中搜索它,但实际上根本没有提到它。pragmas是否与函数原型一起从C继承?或者,它们实际上不需要避免UB,因为C++标准没有在不使用语用时(不提及语法)的情况下对行为进行任何定义吗? < P>我搜索了2015标准

在阅读一份针对的错误报告时,我遇到了一个:

设置舍入模式而不在上使用pragma STDC FENV_访问将调用未定义的行为。见C117.6.1/2。(这个实用主义在C++中不存在,所以不可用,但这不是我们的错……)

这真的真的不存在于C++中,渲染<代码> <代码>不可用吗?我曾尝试在C++11标准中搜索它,但实际上根本没有提到它。pragmas是否与函数原型一起从C继承?或者,它们实际上不需要避免UB,因为C++标准没有在不使用语用时(不提及语法)的情况下对行为进行任何定义吗?

< P>我搜索了2015标准草案文本,没有发现FunviAccess的出现。也没什么

但是,确实提到了它(因为它不在标准中,我认为我们必须假设这充其量只是咨询信息):

引用自cplusplus.com:(强调我的)

如果设置为on,程序将通知编译器它可能访问浮点环境以测试其状态标志(异常),或在默认情况下不在控制模式下运行

如果设置为off,编译器可能会执行某些优化,这些优化会破坏这些测试和模式更改,因此在上述情况下访问浮点环境会导致未定义的行为

此杂注的默认状态是打开还是关闭取决于编译器设置和库实现。

鉴于令人不安的缺乏明确性,如果可能的话,我想避免使用它

和以往一样,如果使用是不可避免的,我希望将其封装到一个类中,我可以专门为每个体系结构进行测试

然后记录该类的存在,以及如果编译器、环境或库实现升级,它可能导致的问题

更新:

<> P>在C++标准中有一个非常简短的标题:

§26.3浮点环境[cfenv]

标题定义了与C标准第7.6条相同的所有函数、类型和宏

更新:

详情请参阅:


我的理解是,pragma是由C11标准定义的,而不是C++11标准。因此,在C++程序中使用严格执行/未定义。

这将需要卷起袖子,并编写并提交LLVM补丁。当开源让你修复这些东西时,这很好。@HansPassant你是什么意思?LLVM修补程序如何解决标准中的问题?在单词
下提到它,以下三个pragma是由C语言标准定义的
。CPLUPLPLUS似乎断言它们在C++中工作,但这种说法似乎是毫无根据的。“鲁斯兰也许更好的措辞是“可能取决于您的实现,也可能不起作用”。?这是否意味着这是一个应该报告和修复的语言缺陷?这意味着在已经存在的11个错误报告中再添加一个错误报告是没有用的。正如我所说,必须有人卷起袖子来解决这个常见的问题。@Ruslan一些未定义的东西并不意味着它一定是一个bug或缺陷。我想问题是,没有它,你还能写连贯的程序吗?