7

我对这篇文章很兴奋:https ://stackoverflow.com/a/57674631/2492801 ,我考虑使用-fno-math-errno. 但我想确保我不会损害我正在开发的软件的行为。

因此,我检查了(相当大的)代码库以查看errno正在使用的位置,并且我想确定这些用法是否会干扰-fno-math-errno. 但是怎么做呢?文档说:

-fno-math-errno

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

但是我怎么知道单条指令执行了哪些数学函数呢?这是在某处记录的吗?在哪里?

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

4

1 回答 1

4

-fno-math-errno您可以在 GCC 的builtins.def中找到受影响的函数列表(搜索“ERRNO”)。似乎只有math.h标头(cos, sin,exp等)中的某些功能受到影响。使用 errno ( 等) 的其他标准函数的处理strtol在此标志下不会改变。

于 2021-12-28T09:48:43.067 回答