On Tue, Sep 01, 2020 at 12:43:11PM +0200, antoniprzybylik wrote:
Such macros are dangerous. Consider following example:This is for a pointer, no one would ever do that :)
#define GDM_TTY_READY(gdm) (gdm && gdm->tty_dev && gdm->port.count)
GDM_TTY_READY(a + b)
This macro will be expanded in such a way:
(a + b && a + b->tty_dev && a + b->port.count)
And it will lead to errors.
But, if you really worry about this, turn it into an inline function,
that way you get the proper typedef safety, which is what something like
this should really be, not a macro.