Random C issue, was (Re: [vorbis-dev] getting playback length from ogg vorbis file)
Jack Angel
man at oceanography.ru
Tue Jul 15 13:06:04 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),
<p>why doesn't it coerce this double to int as it would if i declared floor as
"int floor(int)" ?
<p>> 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
>
>
> --- >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