> It would seem to me that after hearing how the macros are used in practice,
> wouldn't turning them into inline functions be an improvement? This is
> something gcc supports, it accomplishes the same thing, and has the added
> advantage of type checking.
> http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_4.html#SEC92
>
> Or perhaps type checking macro arguments would be another fertile area for
> the Stanford Checker...
There are benefits to macros too. One that I like for debuggin is that
the C parser will unravel a macro within the context of the execution:
#ifdef DEBUG
#define KMALLOC(x,y) \
printk(__FILE__ ":%d: kmalloc(%d,%d")\n", __LINE__,x,y); \
kmalloc(x,y);
#else
#define KMALLOC(x,y) \
kmalloc(x,y);
#endif
I think the benefit of a macro here is quite visible... you cannot do this
with an inline.
You may also look at some better reasons:
http://www.uwsg.iu.edu/hypermail/linux/kernel/9810.3/0323.html
[btw I found this by looking for 'macros vs inline' on google/linux]
Bart.
-- WebSig: http://www.jukie.net/~bart/sig/
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/