Re: Macro that expand differently depending on the function calling it.
- From: Jack Klein <jackklein@xxxxxxxxxxx>
- Date: Tue, 30 Oct 2007 21:43:56 -0500
On Wed, 31 Oct 2007 00:53:34 -0000, Fabrice
<fabrice.gautier@xxxxxxxxx> wrote in comp.lang.c:
Hi,
Lets say I want to define a generic macro to swap bytes in a integer:
#define swapbytes(x) ...
I have several implementation of the macros, one is generic C, the
other one will be an optimized assembly version for a specific
architecture.
So I do something like that in swapbytes.h:
#ifdef __SOME_IMPLEMENTATION_SPECIFIC_MACRO__
#define swapbytes(x) \
... some implementation defined assembly crap...
#else
#define swapbytes(x) \
... some generic C code ...
#endif
This works well and I can extend this to support many different
implementation dependent optimizations: MIPS, ARM, x86,...
Now i have an additional issue. In some case, I have two functions in
the same source files that requires two different implementations of
the macro. An example of such case is when you deal with arm thumb or
mips16 instruction set. Some implementation allows you to mix both
types of code, but my swapbytes macro would needs to be different for
both of them.
Is there any way to handle that while still keeping a generic include
file ?
Thanks
-- Fabrice
PS: If you think this is off-topic because I mention mips16 and thumb,
dont even bother replying.I think the C standard was designed to cope
with implementation specific extensions and issues like this.
If you can provide proof from an Internationally recognized court of
law that has granted you supreme dictatorial powers over comp.lang.c,
and furthermore provide proof of that court's legal jurisdiction in
doing so, then you might attempt to forbid people who might dislike
your off-topic question from replying.
But I doubt if that would stop them. It certainly wouldn't stop me.
As for your incorrect belief about the C standard, and it is
incorrect, who gives a piece of bovine excrement?
*plonk*
--
Jack Klein
Home: http://JK-Technology.Com
FAQs for
comp.lang.c http://c-faq.com/
comp.lang.c++ http://www.parashift.com/c++-faq-lite/
alt.comp.lang.learn.c-c++
http://www.club.cc.cmu.edu/~ajo/docs/FAQ-acllc.html
.
- References:
- Prev by Date: Re: printf("%d",float)
- Next by Date: Re: how to optimize a for loop
- Previous by thread: Macro that expand differently depending on the function calling it.
- Next by thread: Re: Macro that expand differently depending on the function calling it.
- Index(es):
Relevant Pages
|