gpt4 book ai didi

c - Gcc 使用 sqrt 而不包含 math.h

转载 作者:太空狗 更新时间:2023-10-29 17:20:30 24 4
gpt4 key购买 nike

谁知道为什么这个c程序编译使用math.h的sqrt?

这将输出 2.236068

主.c

#include <stdio.h>
#include "math_utils.h"

int main(void){
printf("%f\n", sqrt(5));
return 0;
}

数学工具.h

#ifndef MATH_UTILS_Hs
#define MATH_UTILS_Hs

double sqrt(double number){
return number + 5;
}

#endif // MATH_UTILS_Hs

我目前在 Windows 上使用 mingw GCC

最佳答案

gcc 执行优化,它希望标准库函数的行为像标准所说的那样,将对 C 标准库的调用转换为更高效的机器代码。例如,gcc 很可能发出一个 fsqrt您的说明 sqrt()打电话,永远不要调用您的自定义 sqrt()完全没有。

您可以通过提供 -fno-builtin 来关闭此行为为所有可识别的功能关闭此优化或通过提供 -fno-builtin-<em>function</em><em>function</em> 关闭此优化只要。例如,-fno-builtin-sqrt将使 gcc 尊重您的非标准 sqrt() .

关于c - Gcc 使用 sqrt 而不包含 math.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32798730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com