Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | jgk@panix.com (Joe keane) |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: macro |
| Date | 2012-01-16 14:48 +0000 |
| Organization | Public Access Networks Corp. |
| Message-ID | <jf1dcn$ign$1@reader1.panix.com> (permalink) |
| References | <89018f82-9f45-4e72-a0a2-8424e91752b6@g41g2000yqa.googlegroups.com> <87boq5ozau.fsf@temporary-address.org.uk> <8645ca39-0a48-4efb-af29-86f84eb04cd5@h3g2000yqe.googlegroups.com> <92fa9a4a-692b-4ffd-a733-97a0b417a669@f1g2000yqi.googlegroups.com> |
In article <92fa9a4a-692b-4ffd-a733-97a0b417a669@f1g2000yqi.googlegroups.com>,
christian.bau <christian.bau@cbau.wanadoo.co.uk> wrote:
>You probably want to use the well-known trick do create a macro that
>is a single statement without semicolon like:
>
>#define LOG (level, msg) do { whatever (); } while (0)
>
>and get rid of that rubbish where you use a ternary operator to save
>an if statement, which is just rubbish and demonstrates that someone
>tries to look clever without actually being clever.
Silly.
Of *course* you want a macro to be expression if that's easily done.
e.g.
#define JK_GET_Z(JK, Z) \
(((JK)->a & 0x1) == 0 ? \
((Z) = (JK)->b >> 2 & 0x1, 0) : JK_GET_XZ(JK, Z))
You could write
#define JK_GET_Z(JK, Z) \
do { \
if (((JK->a) & 0x1) == 0) \
(Z) = (JK)->b >> 2 & 0x1; \
else
JK_GET_XZ(JK, Z); \
} while (0)
but *why*?
#define JK_GET_XZ(JK, Z) \
(((JK)->a & 0x3) == 0 ? \
((Z) = (JK)->c >> 3 & 0x1, 0) : jk_get_xz((JK), &(Z)))
You could write
#define JK_GET_XZ(JK, Z) \
do { \
int err;
if (((JK)->a & 0x3) == 0) { \
(Z) = (JK)->c >> 3 & 0x1;
err = 0; \
} else \
err = jk_get_xz((JK), &(Z)); \
__??(err); \
} while (0)
but *why*?
[of course the first of the first and the second of the second doesn't
work at all; the first of the second works with the second of the first]
I written plenty of macros.
#define PQ_FRACK(PQ) \
(PQ_IS_X(PQ) ? PQ_FRACK_X(PQ) : \
PQ_IS_Y(PQ) ? PQ_FRACK_Y(PQ) : pq_frack_other(PQ))
#define PQ_FRACK_Y(PQ) \
(((PQ)->p & PQ_SBZ) == 0 ? ((PQ)->q |= PQ_FRB, 0) : ERR_DANG)
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
macro dspfun <dspfun@hotmail.com> - 2012-01-15 05:29 -0800
Re: macro Dr Nick <3-nospam@temporary-address.org.uk> - 2012-01-15 13:44 +0000
Re: macro dspfun <dspfun@hotmail.com> - 2012-01-15 05:58 -0800
Re: macro "Joachim Schmitz" <nospam.jojo@schmitz-digital.de> - 2012-01-15 15:34 +0100
Re: macro "christian.bau" <christian.bau@cbau.wanadoo.co.uk> - 2012-01-15 06:37 -0800
Re: macro dspfun <dspfun@hotmail.com> - 2012-01-15 07:28 -0800
Re: macro Philip Lantz <prl@canterey.us> - 2012-01-15 17:30 -0800
Re: macro Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-01-16 00:18 -0800
Re: macro Hans Vlems <hvlems@freenet.de> - 2012-01-16 00:52 -0800
Re: macro Ian Collins <ian-news@hotmail.com> - 2012-01-16 22:08 +1300
Re: macro Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-01-16 03:04 -0800
Re: macro Markus Wichmann <nullplan@gmx.net> - 2012-01-16 12:42 +0100
Re: macro jgk@panix.com (Joe keane) - 2012-01-16 14:48 +0000
Re: macro Keith Thompson <kst-u@mib.org> - 2012-01-16 12:01 -0800
Re: macro Philip Lantz <prl@canterey.us> - 2012-01-17 01:02 -0800
Re: macro Keith Thompson <kst-u@mib.org> - 2012-01-17 13:05 -0800
Re: macro Ian Collins <ian-news@hotmail.com> - 2012-01-18 13:12 +1300
Re: macro dspfun <dspfun@hotmail.com> - 2012-01-18 01:05 -0800
Re: macro Ian Collins <ian-news@hotmail.com> - 2012-01-18 22:57 +1300
Re: macro "osmium" <r124c4u102@comcast.net> - 2012-01-18 06:22 -0600
Re: macro dspfun <dspfun@hotmail.com> - 2012-01-18 07:50 -0800
Re: macro Ian Collins <ian-news@hotmail.com> - 2012-01-20 14:09 +1300
Re: macro blp@cs.stanford.edu (Ben Pfaff) - 2012-01-18 11:28 -0800
Re: macro Kaz Kylheku <kaz@kylheku.com> - 2012-01-18 21:09 +0000
Re: macro Ian Collins <ian-news@hotmail.com> - 2012-01-20 15:08 +1300
[OT] Re: macro Ian Collins <ian-news@hotmail.com> - 2012-01-20 15:58 +1300
Re: [OT] Re: macro Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-01-20 12:22 +0000
Re: [OT] Re: macro Ian Collins <ian-news@hotmail.com> - 2012-01-21 07:58 +1300
Re: macro James Kuyper <jameskuyper@verizon.net> - 2012-01-19 22:47 -0500
Re: macro Ian Collins <ian-news@hotmail.com> - 2012-01-20 17:06 +1300
Re: macro James Kuyper <jameskuyper@verizon.net> - 2012-01-20 00:12 -0500
Re: macro Ian Collins <ian-news@hotmail.com> - 2012-01-20 18:28 +1300
Re: macro Keith Thompson <kst-u@mib.org> - 2012-01-20 03:21 -0800
Re: macro Shao Miller <sha0.miller@gmail.com> - 2012-01-20 10:50 -0500
Re: macro Shao Miller <sha0.miller@gmail.com> - 2012-01-20 11:46 -0500
Re: macro Keith Thompson <kst-u@mib.org> - 2012-01-18 14:24 -0800
Re: macro jgk@panix.com (Joe keane) - 2012-01-18 22:36 +0000
Re: macro Kaz Kylheku <kaz@kylheku.com> - 2012-01-18 22:50 +0000
Re: macro jgk@panix.com (Joe keane) - 2012-01-17 22:08 +0000
Re: macro Keith Thompson <kst-u@mib.org> - 2012-01-15 08:00 -0800
Re: macro NEON China BLUE <chine.bleu@yahoo.com> - 2012-01-15 08:15 -0800
Re: macro Ian Collins <ian-news@hotmail.com> - 2012-01-16 09:04 +1300
Re: macro Philip Lantz <prl@canterey.us> - 2012-01-15 17:36 -0800
Re: macro Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-01-16 12:01 +0000
csiph-web