Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #15921

Re: macro

From Kaz Kylheku <kaz@kylheku.com>
Newsgroups comp.lang.c
Subject Re: macro
Date 2012-01-18 21:09 +0000
Organization A noiseless patient Spider
Message-ID <20120118130142.908@kylheku.com> (permalink)
References (6 earlier) <MPG.297ed91372934fba989686@news.eternal-september.org> <lnaa5myr89.fsf@nuthaus.mib.org> <9nmh3nFaaoU1@mid.individual.net> <8a04a8ba-eee0-48fd-9cb6-98695875840e@f33g2000yqh.googlegroups.com> <9nnjboFaaoU3@mid.individual.net>

Show all headers | View raw


On 2012-01-18, Ian Collins <ian-news@hotmail.com> wrote:
> Because in most cases it gets used where a function or as in your code, 
> a macro wrapping a function, is more appropriate.  The rare exceptions 
> are where macros are used as poor man's templates.
>
> I guess the use of "do...while(0)" (and function-like macros in general) 
> is a hang over from 80s and 90s compiler which didn't inline functions.

There are UUOM's (useless uses of macros) that can be replaced by functions.
But then there are function-like macros that cannot be written as functions.

If you don't write UUOM's in your code, then the remaining uses are hardly
rare exceptions. If you know what you're doing, 100% of your macros are
in fact necessary.

Here is a requirement:

  or(x, y)

This must evaluate X.  If X is nonzero, then the value X is the result, and Y
is not evaluated. Otherwise the result is the value of Y.  X is evaluated
exactly once, and Y at most once.

Good luck making a function for this.  Or even an entirely clean macro,
for that matter.

(Is that really "poor" man's template, by the way? Okay, show me the "rich"
man's C++ template for it, then.)

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


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