Messages in this thread | | | From | Ingo Oeser <> | Subject | Re: [PATCH] ARCH_HAS_IRQ_PER_CPU avoids dead code in __do_IRQ() | Date | Sun, 7 Aug 2005 13:07:20 +0200 |
| |
Hi Karsten,
On Sunday 07 August 2005 12:25, Karsten Wiese wrote: > With my proposal the > #if defined(ARCH_HAS_IRQ_PER_CPU) > .... > #endif > lets readers of __do_IRQ() immediately grasp: > "this block might not be compiled / depends an ARCH" > And you'll get compile error's using IRQ_PER_CPU on ie i386, > letting you immediately know, > that you've got to change something to be able to use IRQ_PER_CPU. > > That are advantages I think.
That's a valid argument. But an if is an if for the reader. It is a conditional he has to be aware of and it usally has no idention, if it is just inside "#if" instead of "if ()".
I have seen people seen missing "#if 0" [1] around code while reading it. Missing an normal if () is harder with proper idention.
A normal conditional has also the advantage, that the compiler checks the code for syntactic and some semantic errors within it.
In an "#if 0" you can basically write any plain text[2] and any error will go undetected, until it becomes an "#if 1".
Since your define is true for most compilations out there, this argument is not very strong.
Last argument: Many kernel developers -- including Linus -- don't like "#if" in C files and prefer them in headers. Their reasons might be similiar to my own.
Regards
Ingo Oeser
[1] Let's just consider the values of the pre-processor symbols here, ok? [2] Pavel Machek used this already to combine Makefile and C file :-)
[unhandled content-type:application/pgp-signature] | |