Messages in this thread | | | Date | Mon, 21 Jul 2008 16:04:24 +0200 | From | Mikael Pettersson <> | Subject | Re: [PATCH] x86: PIC, L-APIC and I/O APIC debug information |
| |
Maciej W. Rozycki writes: > On Mon, 21 Jul 2008, Mikael Pettersson wrote: > > > > +#define __apicdebuginit(type) static type __init > > ... > > > -void __init print_IO_APIC(void) > > > + > > > +__apicdebuginit(void) print_IO_APIC(void) > > > { > > > > I _really_ dislike how this abuses the C macro preprocessor > > to create pointless new syntax. > > > > Since you're editing these function definitions anyway why > > not just spell out "static void __init" in readable proper C? > > This is so that while debugging you can make all these functions global > with a single change in one place, rather than going through the whole > file and finding all the relevant function headers. Presumably the > original reason for the existence of the macro. Unfortunately an > object-like macro cannot be used here, as the "static" keyword has to come > first in a function declaration and the section attribute has to come > after the type designation. > > What's wrong with the syntax in your opinion?
It's not even remotely C-like, which will cause confusion for anyone or anything trying to read and understand the code.
(Basically you're on the path to PL/1 or Bourne C, neither of which were great from a software engineering point of view.)
Something like the following looks saner to me, would it work for you?
#ifdef debug #define apicdebug /* empty */ #define __apicinit /* empty */ #else #define apicdebug static #define __apicinit __init #endif ... apicdebug void __apicinit print_IO_APIC(void) { .. }
/Mikael
| |