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


Groups > comp.lang.c > #71166

Re: just curious:Equel

From Ben Bacarisse <ben.usenet@bsb.me.uk>
Newsgroups comp.lang.c
Subject Re: just curious:Equel
Date 2015-09-24 10:23 +0100
Organization A noiseless patient Spider
Message-ID <87vbb0f9w4.fsf@bsb.me.uk> (permalink)
References (12 earlier) <msm6jq$qj8$1@speranza.aioe.org> <kfnlhcfld75.fsf@x-alumni2.alumni.caltech.edu> <msrehd$d8j$1@speranza.aioe.org> <MPG.306d279abfa29e7863@news.eternal-september.org> <mu0b1k$vf1$1@speranza.aioe.org>

Show all headers | View raw


August Karlstrom <fusionfile@gmail.com> writes:

> On 2015-09-24 07:18, Philip Lantz wrote:
>> On 2015-09-10, August Karlstrom wrote:
>>> On 2015-09-09 19:22, Tim Rentsch wrote:
>>>> August Karlstrom <fusionfile@gmail.com> writes:
>>>>> #define LEN(arr) (sizeof (arr) / sizeof (arr)[0])
>>>>>
>>>>> #define NEW_ARRAY(ptr, n) (ptr) = malloc((n) * sizeof *(ptr))
>>>>>
>>>>> #define NEW(ptr) NEW_ARRAY((ptr), 1)
>>>>
>>>> Incidentally, you probably know this, but these NEW's can be used as
>>>> parts of declarations:
>>>>
>>>> int *NEW( stuff, 20 );
>>>
>>> Or "misused", depending on how you see it. ;-)
>>
>> Perhaps Tim was slyly pointing out that you omitted the usual
>> parentheses around the macro expansion.
>>
>> Oh, I see from his next response that he probably wasn't. But fully
>> parenthesizing macros that expand to expressions is generally considered
>> good form, and it would prevent the "misuse", should you care to do so.
>
> I'm thinking that the macro NEW is semantically a function call
> *statement*. Therefor it's not meant to be used  in expressions (or in
> declarations like the one above).

If you want, you can enforce that rule by writing the macro like this:

#define NEW_ARRAY(ptr, n) do (ptr) = malloc((n) * sizeof *(ptr)); while (0)

-- 
Ben.

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


Thread

Re: just curious:Equel Tim Rentsch <txr@alumni.caltech.edu> - 2015-09-09 10:22 -0700
  Re: just curious:Equel August Karlstrom <fusionfile@gmail.com> - 2015-09-10 10:21 +0200
    Re: just curious:Equel Tim Rentsch <txr@alumni.caltech.edu> - 2015-09-11 12:06 -0700
      Re: just curious:Equel August Karlstrom <fusionfile@gmail.com> - 2015-09-12 17:53 +0200
        Re: just curious:Equel Tim Rentsch <txr@alumni.caltech.edu> - 2015-09-26 16:04 -0700
          Re: just curious:Equel Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-09-26 16:17 -0700
            Re: just curious:Equel Tim Rentsch <txr@alumni.caltech.edu> - 2015-10-01 12:53 -0700
          Re: just curious:Equel August Karlstrom <fusionfile@gmail.com> - 2015-09-28 18:00 +0200
            Re: just curious:Equel Tim Rentsch <txr@alumni.caltech.edu> - 2015-10-01 12:51 -0700
    Re: just curious:Equel Philip Lantz <prl@canterey.us> - 2015-09-23 22:18 -0700
      Re: just curious:Equel August Karlstrom <fusionfile@gmail.com> - 2015-09-24 10:08 +0200
        Re: just curious:Equel Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-09-24 10:23 +0100
          Re: just curious:Equel Philip Lantz <prl@canterey.us> - 2015-09-24 10:28 -0700
            Re: just curious:Equel Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-09-24 19:56 +0100
        Re: just curious:Equel Tim Rentsch <txr@alumni.caltech.edu> - 2015-09-26 16:16 -0700
          Re: just curious:Equel August Karlstrom <fusionfile@gmail.com> - 2015-09-28 08:18 +0200
      Re: just curious:Equel Tim Rentsch <txr@alumni.caltech.edu> - 2015-09-26 16:10 -0700
        Re: just curious:Equel supercat@casperkitty.com - 2015-09-27 11:40 -0700
          Re: just curious:Equel Tim Rentsch <txr@alumni.caltech.edu> - 2015-09-29 10:03 -0700

csiph-web