rounding numbers in gcc ?

Liberty Young plug-discuss@lists.plug.phoenix.az.us
31 Oct 2002 08:58:28 -0700


How can i round numbers using standard c code? 

in gcc-2.96 (and gcc-3.04) from a Mandrake 8.2 box, the following won't
work:

#include <math.h>
#include <stdio.h>

int main () {
   printf(" 1.9 rounded is %f\n", roundf(1.9)/*or round(1.9)*/ );
   printf(" 1.4 rounded is %f\n", roundf(1.4)/*ditto*/ );
return 0;
}


gcc -Wall -D_GNU_SOURCE -D_ISOC99_SOURCE foo.c -o foo


returns 
/home/liberty/tmp/ccQqyMJ7.o: In function `main':
/home/liberty/tmp/ccQqyMJ7.o(.text+0x12): undefined reference to
`roundf'
/home/liberty/tmp/ccQqyMJ7.o(.text+0x39): undefined reference to
`roundf'
collect2: ld returned 1 exit status


I realize that defining _GNU_SOURCE in linux _should_ also define
_ISOC99_SOURCE, but i included it just to be sure. 

Or is this just my distro's problem with the version of gcc they've
chosen to use ? 
Does anybody have an alternative solution?