Ktoś wie, dlaczego ten program c kompiluje i używa sqrt z math.h?Gcc używa sqrt bez włączania math.h
to byłoby wyjście 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
Obecnie używam MinGW GCC na Windows
GCC ma wbudowaną funkcję 'sqrt', prawdopodobnie zastępuje połączenie wywołaniem wbudowanej funkcji. Skoro definiujesz tę funkcję, to naprawdę powinieneś użyć swojej definicji, może błędu w GCC? Jakiej wersji GCC używasz? –
Jestem obecnie przy użyciu 4.8.3, próbowałem usunąć math_utils.h i to dałoby mi ten błąd 'main.c: 5: 18: warning: niekompatybilna niejawna deklaracja wbudowanej funkcji 'sqrt' [domyślnie włączona]' – Snippet
@JoachimPileborg Wierzę, że gcc zakłada, że jakakolwiek definicja uznanej funkcji jest w zakresie, zawsze będzie robiła to, co gcc uważa za funkcję. – fuz