[cairo] Add attribute(warn_unused_result)
Behdad Esfahbod
behdad at behdad.org
Wed Mar 21 11:41:31 PDT 2007
On Wed, 2007-03-21 at 12:51 -0400, Chris Wilson wrote:
> This adds a compiler check that the function result is used by the
> caller and enables it by default for all cairo_private functions and
> for public API that returns a cairo_status_t.
>
> Unfortunately, I have found no way to disable the spurious warnings
> from gcc when applying the attribute to variables or functions
> returning void. To placate gcc, new function types have been
> introduced to manually avoid the warning. So we now have
> cairo_public_warn/cairo_public and cairo_private/cairo_private_no_warn
> - choosen as the majority of internal functions should be checking for
> errors!, whereas only a minority of the public API requires an
> immediate error check.
>
> To extend the warning to all functions, a new function type has been
> introduced to cover static functions:
> cairo_static/cairo_static_no_warn.
This is very neat stuff... I like the idea of marking every function
with a variant of cairo_public, cairo_private, and cairo_static. The
part I don't like is where those markings are placed. cairo_static
comes at function declaration site, while the others come at the
prototype, and for cairo_public, a slim_hidden should follow the
definition... May not be easy to improve these. In an ideal world, we
won't have to mark them at all:
- Symbols starting with cairo_ are public
- Symbols starting with _cairo_ are private
- All other symbols are static
But go get that in C...
The only part I really displike is the "cairo_private_no_warn void".
While cairo_private_no_warn is useful for other places too, can we have
a cairo_private_void instead?
Also note that we already #define __attribute__() if not using gcc, so
some of the checks may be relaxed, but that's not a big deal.
Anyway, I really hope Carl gets to throwing in his wisdom and get your
stuff polished and committed before they rot.
Cheers,
--
behdad
http://behdad.org/
"Those who would give up Essential Liberty to purchase a little
Temporary Safety, deserve neither Liberty nor Safety."
-- Benjamin Franklin, 1759
More information about the cairo
mailing list