Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | James Kuyper <jameskuyper@verizon.net> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: macro |
| Date | 2012-01-20 00:12 -0500 |
| Organization | A noiseless patient Spider |
| Message-ID | <jfat42$t2p$1@dont-email.me> (permalink) |
| References | (10 earlier) <9nnjboFaaoU3@mid.individual.net> <20120118130142.908@kylheku.com> <9ns0koF524U3@mid.individual.net> <jfao4h$8ph$1@dont-email.me> <9ns7i5F524U6@mid.individual.net> |
On 01/19/2012 11:06 PM, Ian Collins wrote:
> On 01/20/12 04:47 PM, James Kuyper wrote:
>> On 01/19/2012 09:08 PM, Ian Collins wrote:
>>> On 01/19/12 10:09 AM, Kaz Kylheku wrote:
...
>>>> 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.)
>>
>> There's a trivial problem with the suggestion of using C++ to implement
>> or(): 'or' is keyword in C++, with the same meaning as the 'or' #defined
>> by<iso646.h> in C. Any attempt to define any identifier with that name
>> would fail, usually by being interpreted as a syntax error. So let's
>> change the name of the requested function to Or().
>>
>>> Not really, at least for c++03. With C++0x I guess you could use a
>>> simple variable arguments template if both expressions are the same type:
...
>>> Life gets more interesting when they are different types.
>>
>> So, could you show how a non-macro implementation of 'Or()' could built
>> in C++ from do_or()? Let's be more specific. Given
>>
>> int a=2;
>>
>> How could Or(1,a++) implemented, so as to prevent evaluation of a++?
>
> I don't see how it can, a++ will always be evaluated as a function
> parameter in either language.
That was precisely the point Kaz was making. He's suggesting that it can
be implemented using a macro, though I'm not quite sure how that would work.
The key point is that controlling the number of times that an argument
gets evaluated is possible for macros, but not for functions.
What this has to do with the do {...} while(0) idiom, I have no idea,
since no matter how Or() is implemented, it certainly can't be
implemented by use of that idiom, since it doesn't allow returning a value.
--
James Kuyper
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