任何人都知道为什么这个c程序编译并使用math.h的sqrt?
这将输出2.236068
main.c中
#include <stdio.h>
#include "math_utils.h"
int main(void){
printf("%f\n", sqrt(5));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
math_utils.h
#ifndef MATH_UTILS_Hs
#define MATH_UTILS_Hs
double sqrt(double number){
return number + 5;
}
#endif // MATH_UTILS_Hs
Run Code Online (Sandbox Code Playgroud)
我目前正在Windows上使用mingw GCC
gcc执行优化,它希望标准库函数的行为与标准所说的一样,即将调用C标准库转换为更高效的机器代码.例如,gcc可能会fsqrt为您的sqrt()呼叫发出一条指令,而根本不会调用您的自定义sqrt().
您可以通过提供-fno-builtin为所有已识别的功能关闭此优化或仅提供关闭此优化来关闭此行为.例如,会让gcc尊重你的非标准.-fno-builtin-functionfunction-fno-builtin-sqrtsqrt()
| 归档时间: |
|
| 查看次数: |
940 次 |
| 最近记录: |