任何人都知道爲什麼這個c程序編譯和使用math.h的sqrt?Gcc使用sqrt不包括math.h
這將輸出2.236068
的main.c
#include <stdio.h>
#include "math_utils.h"
int main(void){
printf("%f\n", sqrt(5));
return 0;
}
math_utils.h
#ifndef MATH_UTILS_Hs
#define MATH_UTILS_Hs
double sqrt(double number){
return number + 5;
}
#endif // MATH_UTILS_Hs
我目前在Windows上使用MinGW的GCC
GCC有一個內置的'sqrt'函數,它可能會用對它的內建函數的調用來代替你的調用。既然你定義了這個函數,它應該真的使用你的定義,也許是GCC中的一個錯誤?你使用的是什麼版本的GCC? –
我目前使用4.8.3,我試圖刪除math_utils.h,它會給我這個錯誤'main.c:5:18:警告:不兼容隱含聲明的內置函數'sqrt'[默認情況下啓用]' – Snippet
@JoachimPileborg我相信gcc認爲,無論對已識別函數的定義是否在範圍內,它都會做gcc認爲函數應該做的事情。 – fuz