[Ffmpeg-devel] meta-discussion Re: [PATCH] part 8 - portability fixes (ILP32 vs LP64)

Måns Rullgård mru
Mon Jan 30 20:47:25 CET 2006


Rich Felker <dalias at aerifal.cx> writes:

> On Mon, Jan 30, 2006 at 06:11:52PM -0000, M?ns Rullg?rd wrote:
>> > Therefore I turn on the prototype/decl related warnings.
>> >
>> > I view the resulting warnings, and their fixes, as being
>> > related to portability between CPU architectures.  You are
>> > of course welcome to view them differently, but I cannot
>> > read your mind.
>> 
>> If you turn up the warning levels to for whatever reason, that does not
>> make all warnings generated related to that reason.  Specifically, warnings
>> about missing prototypes never have anything to do with machine word size.
>
> Actually they do, but not in Dieter's nonsense case where the
> functions are defined prior to their use. Consider something like:
>
> int foo(char *);
>
> If I'm missing this prototype and call it with foo(0) on a system
> where sizeof(char *) > sizeof(int), bad things will happen.

I am well aware of that, and I made the distinction in the part you
didn't quote.

> Even if I explicitly use foo((char *)0), it may not work, since
> functions without prototypes are considered equivalent to 'old style'
> functions (like those with variable # of arguments) and may need to
> use a different calling convention (arguments on stack instead of in
> registers) on architectures with register-passing and such.
>
> So in summary, lack of declaration before using a function _is_ a
> portability problem, but the function declaration doubles as a
> definition, obviously.

ITYM the definition doubles as declaration.

Implicit declaration of functions is not just a portability problem.
It is also bad style since it can potentially hide serious bugs.

On the whole though, I agree with you this time.

-- 
M?ns Rullg?rd
mru at inprovide.com





More information about the ffmpeg-devel mailing list