Tengo el siguiente código C:¿Por qué gcc informa "declaración implícita de la función 'ronda'"?
#include <math.h>
int main(int argc, char ** argv)
{
double mydouble = 100.0;
double whatever = round(mydouble);
return (int) whatever;
}
Cuando compilo esto, conseguir las advertencias:
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’
estoy oxidado con C, pero pensé que el # include trajo una declaración para round() en el alcance. Revisé mi estándar ANSI (C99 es la única copia que tengo) que confirma que la función round() existe en el encabezado math.h. ¿Que me estoy perdiendo aqui?
Editar: El compilador es GCC 4.3.2 en Ubuntu (intrépido, IIRC). Ejecutando gcc -E da:
$ gcc -E round_test.c | grep round
# 1 "round_test.c"
# 1 "round_test.c"
# 2 "round_test.c" 2
double whatever = round(mydouble);
por lo que la definición obviamente no se encuentra en los encabezados.
Gracias, -std = c99 pareció resolverlo. No me había dado cuenta de que Round() era una adición de C99 (y, por supuesto, todas mis referencias son C99 y olvido mencionar esto) –
(mirada sorprendida) ¿Es round() realmente una adición de C99? –
A la derecha, C89 no describió la función 'round()' (por supuesto, los compiladores podrían proporcionarlo como una extensión). – pmg