dealing with built-in functions

Andrew Haley aph-gcc@littlepinkcloud.COM
Wed Jun 13 09:57:00 GMT 2007


Florian Gleixner writes:
 > Hi,
 > 
 > i try to fugure out what is the "best way". The following code throws a
 > warning:
 > 
 > #include <stdio.h>
 > #include <math.h>
 > 
 > int main(void)
 > {
 >   double x=1.7;
 >   printf("%f %f",x,round(x));
 > }
 > 
 > gcc r.c -lm
 > r.c: In function 'main':
 > r.c:9: warning: incompatible implicit declaration of built-in function
 > 'round'
 > 
 > I can avoid this by using the compiler switch -fno-builtin. But as far
 > as i understand, the built in functions are optimized. So if i use
 > -fno-builtin, i lose some cycles?
 > I can also put at line 3:
 > extern double round(double);
 > and then i don't need the -fno-builtin. But what does that mean? Which
 > round() do i use then? Can i avoid the warning if i use other types of
 > variables - i don't know how the built-in round() is defined.
 > Other thoughts?

Look at the Fine Man Page:

NAME
       round, roundf, roundl - round to nearest integer, away from zero

SYNOPSIS
       #include <math.h>

       double round(double x);
       float roundf(float x);
       long double roundl(long double x);

       Compile with -std=c99; link with -lm.

Note the last line.

Andrew.



More information about the Gcc-help mailing list