Mam następujący kod C:Dlaczego gcc zgłasza "ukrytą deklarację funkcji" zaokrągloną "?
#include <math.h>
int main(int argc, char ** argv)
{
double mydouble = 100.0;
double whatever = round(mydouble);
return (int) whatever;
}
Kiedy skompilować to, dostaję ostrzeżenia:
round_test.c: In function ‘main’:
round_test.c:6: warning: implicit declaration of function ‘round’
round_test.c:6: warning: incompatible implicit declaration of built-in function ‘round’
jestem zardzewiały z C, ale myślałem, że #include przyniósł oświadczenie dla rundy() do zakresu. Sprawdziłem mój standard ANSI (C99 to jedyny egzemplarz, jaki mam), który potwierdza, że funkcja round() istnieje w nagłówku math.h. Czego tu mi brakuje?
Edytuj: Kompilatorem jest GCC 4.3.2 na Ubuntu (nieustraszony, IIRC). Uruchamianie gcc -E daje:
$ gcc -E round_test.c | grep round
# 1 "round_test.c"
# 1 "round_test.c"
# 2 "round_test.c" 2
double whatever = round(mydouble);
, więc definicja oczywiście nie znajduje się w nagłówkach.
Dzięki, -std = c99 wydawało się to rozwiązać. Nie zdawałem sobie sprawy, że runda() była dodatkiem C99 (i oczywiście wszystkie moje referencje to C99 i nie wspominając o tym) –
(zaskoczony wygląd) Czy runda() naprawdę jest dodatkiem C99? –
Dobrze, C89 nie opisywało funkcji 'round()' (oczywiście kompilatory mogą zapewnić ją jako rozszerzenie). – pmg