C++ 哪些函数受-fno数学错误影响? 这篇文章让我很兴奋:我考虑使用 -fNO数学ErnNO./Cudio>。但我希望确保我不会损害我正在开发的软件的行为

C++ 哪些函数受-fno数学错误影响? 这篇文章让我很兴奋:我考虑使用 -fNO数学ErnNO./Cudio>。但我希望确保我不会损害我正在开发的软件的行为,c++,gcc,error-handling,compiler-optimization,C++,Gcc,Error Handling,Compiler Optimization,因此,我检查了(相当大的)代码库以查看errno的使用位置,我想确定这些用法是否会干扰-fno math errno。但如何做到这一点呢?文件说: -fno数学错误 在调用使用单个指令执行的数学函数(例如sqrt)后,不要设置errno 但是我怎么知道哪些数学函数是用一条指令执行的呢?这有文件记录吗?在哪里 我使用的代码库似乎依赖于errno,尤其是在调用strtol和处理流时。我猜strtol不是用一条指令执行的。它被认为是一个数学函数吗?我怎么能确定呢?像这样的东西,你的第一个目标应该是@N

因此,我检查了(相当大的)代码库以查看
errno
的使用位置,我想确定这些用法是否会干扰
-fno math errno
。但如何做到这一点呢?文件说:

-fno数学错误

在调用使用单个指令执行的数学函数(例如sqrt)后,不要设置errno

但是我怎么知道哪些数学函数是用一条指令执行的呢?这有文件记录吗?在哪里


我使用的代码库似乎依赖于
errno
,尤其是在调用
strtol
和处理流时。我猜strtol不是用一条指令执行的。它被认为是一个数学函数吗?我怎么能确定呢?

像这样的东西,你的第一个目标应该是@NathanOliver,我已经检查过了。我找不到任何提示,
strtol
是用一条指令执行的,还是被认为是一个数学函数。此外,我也找不到使用单个指令执行的数学函数列表。你能给我更多的提示吗?你的意思是什么?我们一般不知道实现,所以你实际上必须检查你的实现。不过,您可以使用它来获取设置
errorno
的函数列表。另外,
strtol
使用整数数学,而不是浮点数学,因此它是免税的。您的评论的第二部分似乎是正确的。在我的帖子中,gcc文档中的引文在下面一行写道:“以下选项控制有关浮点运算的编译器行为。”因此
strtol
是安全的。但前两句我不懂。对于我已经检查过的
中的所有函数,cppreference声明:“按照math\u errhandling中的指定报告错误。”但我仍然不知道它们是否用一条指令执行。那么你的建议是什么?阅读实现源代码?@BenjaminBihler——这是不符合要求的行为,因此标准要求的文档(例如cppreference)对您没有帮助。无论编译器提供什么样的文档,您都会被卡住。