Random C issue, was (Re: [vorbis-dev] getting playback length from ogg vorbis file)

Jack Angel man at oceanography.ru
Sat Jul 12 07:48:53 PDT 2003



On Fri, 11 Jul 2003 23:33:22 -0400
"Kenneth C. Arnold" <kcarnold at arnoldnet.net> wrote:

> Jack Angel wrote:
> 
> >This doesn't work because <math.h> isn't included, and floor definition is picked up from somewhere else. I don't know from where, but check this:
> >
> >~# cat test.c
> >//#include <math.h>
> >
> >int main()
> >{
> >  double time = 800.510;
> >  printf("%f %f\n", time, floor(time));
> >}
> >~# ./test
> >800.510000 80298907385280950682755444182387957006805762791233118433533549849731864380320828326878948200747786192971450917286372883160777116601003408797083834721392632613345848270168843448871733524979042229249230391219772018492598287395874874133804539689308263302039462290421043577395770761936896.000000
> >
> 
> Compile with -Wall and you'll see why:
> 
> test.c:6: warning: implicit declaration of function `printf'
> test.c:6: warning: implicit declaration of function `floor'
> test.c:6: warning: double format, different type arg (arg 3)
> test.c:7: warning: control reaches end of non-void function
> 
> gcc sees no prototype for "floor" and assumes that it is:
> 
> int floor(int)
> 
> (which is the "implicit declaration") because some C standard said that 
> "int" is default. Not only are "int" and "double" different sizes (so 
> you just corrupted your stack; "main" pushed 8 byes and libc popped 4), 
> but the first 4 byes of a "double" are absolutely meaningless when 
> interpreted as an "int".
> 
> This is, of couse, why compiler warnings are actually a good thing. 
> CFLAGS += "-Wall".
> 
> Ken

<p>thank you for this information
i wasn't really interested, but anyway it's good to know
it's one of the things because i hate c
why the hell does it allows implicit function declarations like this?
i can't see any good reason to make it to the c standard
what benefits does it generate?

<p>> 
> 
> --- >8 ----
> List archives:  http://www.xiph.org/archives/
> Ogg project homepage: http://www.xiph.org/ogg/
> To unsubscribe from this list, send a message to 'vorbis-dev-request at xiph.org'
> containing only the word 'unsubscribe' in the body.  No subject is needed.
> Unsubscribe messages sent to the list will be ignored/filtered.
> 

<p>
-- 
The human knowledge belongs to the world
--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'vorbis-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.




More information about the Vorbis-dev mailing list