[FFmpeg-devel] [PATCH] remove useless mm.c close function
Måns Rullgård
mans
Sun Aug 24 17:31:00 CEST 2008
Michael Niedermayer <michaelni at gmx.at> writes:
> On Sun, Aug 24, 2008 at 03:28:21PM +0100, M?ns Rullg?rd wrote:
>> Michael Niedermayer <michaelni at gmx.at> writes:
>>
>> > On Sun, Aug 24, 2008 at 03:33:36PM +0200, Aurelien Jacobs wrote:
>> >> Reimar D?ffinger wrote:
>> >>
>> >> > Hello,
>> >> > admittedly not tested, but seems quite obvious.
>> >>
>> >> That indeed looks safe.
>> >> I guess you can commit such trivial patches without asking.
>> >>
>> >> > Unrelated, but wasn't there a macro to do the standard
>> >> > sizeof(arr)/sizeof(*arr) to get the number of array
>> >> > elements? I've seen quite a few code places that could
>> >> > use it - either to de-hardcode assumptions or to de-uglify..
>> >>
>> >> I proposed a patch a patch adding such a macro some times
>> >> ago [1]. But Michael was not fond of it.
>> >> I still think it is a good idea. Maybe it's time to push
>> >> it again ?
>> >> My original patch (attached for reference) added two macro.
>> >> One for 1D array and one for 2D array. The one for 2D
>> >> array had a quite bad name and wasn't much used.
>> >> So for now I propose only adding this macro:
>> >>
>> >> #define FF_ARRAY_SIZE(a) (sizeof(a)/sizeof(*a))
>> >>
>> >> Michael ? Are you still against this ? Strongly, or just a
>> >> little bit ? ;-)
>> >
>> > I have no strong oppinion on this specific case but overall there are
>> > IMHO FAR too many macros in ffmpeg already, and we should try to reduce
>> > their number not increase it.
>> > Thus if this is added then id like to see at least 1 other macro removed
>> > and
>>
>> What's suddenly so bad about macros?
>
> to understand:
> for(i=0; i < sizeof(a)/sizeof(*a); i++){ ...
> you just need to know C
>
> to understand
> for(i=0; i < FF_ARRAY_SIZE(a); i++){ ...
> you need to know what FF_ARRAY_SIZE does as well.
>
> The more such helper functions and macros ffmpeg has and uses, the
> more difficult it is for a person "outside" to understand and work
> with the code.
IMHO, it's more important that the code is easy to work with for
people on the inside than for those on the outside.
> Thus when adding new ones we should really consider
> * how easy to understand is it when some average to good C programmer for
> the first time sees it?
Someone who can't look up a simple macro definition has no business
working on FFmpeg. We don't want average programmers. We want only
the best, right?
> * Does he have to look up the definiton or is the name alone enough?
Good naming is of course always important.
> * what effect does it have on readability for experienced ffmpeg developers?
Presumably whoever proposes the addition finds it more readable, and
in most cases, I suspect at least some will agree. If enough
developers find the new construct *less* readable, then it should
probably not be included.
> * how much more compact can the code be made by its use?
It's not only about making code more compact. A good helper function
or macro also reduces the risk of bugs, since a mistyped
function/macro name will simply not compile. In the specific case of
array sizes, a macro could crafted to ensure it can only be applied to
actual arrays, not pointers. The latter is a bug I've seen on more
than one occasion.
> Its not really specific to macros ...
> And i do not know if this specific case is good or bad ...
> I simply do not find
> sizeof(array) / sizeof(array[0])
> particularely ugly ...
I'm not saying it's ugly. It is, however, long enough that I (don't
know about others) have to pause and make sure it really does what it
appears to do on first glance. Having a well-named macro do the same
thing would make this immediately obvious.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list