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


Groups > comp.lang.c > #75175

Re: Help with a known member reference in forward conveyance

From Ben Bacarisse <ben.usenet@bsb.me.uk>
Newsgroups comp.lang.c
Subject Re: Help with a known member reference in forward conveyance
Date 2015-11-06 20:21 +0000
Organization A noiseless patient Spider
Message-ID <87mvuqvpzn.fsf@bsb.me.uk> (permalink)
References <b2458ed7-1f02-4177-89b0-df952b1f2163@googlegroups.com>

Show all headers | View raw


"Rick C. Hodgin" <rick.c.hodgin@gmail.com> writes:
<snip>
>     03:    struct SContainer
>     04:    {
>     05:        struct SData*   d1;
>     06:        struct SData*   d2;
>     07:        struct SData*   d3;
>     08:        struct SData*   d4;
>     09:        struct SData*   d5;
>     10:        struct SData*   d6;
>     11:        struct SData*   d7;
>     12:        struct SData*   d8;
>     13:    };
<snip>
> I'm looking for something like this "memberRef" ability, which conveys
> the relative offset for the struct without manual mechanics:

You can do it with offsetof:
>
>     14:    struct SContainer? t;   // A member reference holder

At this point, just declare

  size_t member_offset;
  
>     15:
>     16:    if (some_test)
>     17:        t = d5;             // Need to update d5

                 member_offset = offsetof(struct SContainer, d5);
                 
>     18:  
>     19:    // More instructions
>     20:  
>     21:    // Allocate pointer
>     22:    struct SContainer* c = malloc(sizeof(struct SContainer));
>     23:    if (c)
>     24:    {
>     25:        // Now I can update c->d5 without knowing what it was
>     26:        // in 16: directly, but I simply use the t ?memberRef.
>     26:        c->?t = ptr;

                 struct SData *dp = (void *)((char *)c + member_offset);
                 *dp = ptr;

>     27:        // At this point, c->d5 was set to ptr
>     28:    }

But the form of struct SContainer suggests an array of SData pointers
would be better.  Then you just need to remember an index.

<snip>
-- 
Ben.

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


Thread

Help with a known member reference in forward conveyance "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-11-06 09:27 -0800
  Re: Help with a known member reference in forward conveyance Barry Schwarz <schwarzb@dqel.com> - 2015-11-06 11:06 -0800
  Re: Help with a known member reference in forward conveyance Bartc <bc@freeuk.com> - 2015-11-06 19:20 +0000
  Re: Help with a known member reference in forward conveyance Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-11-06 20:21 +0000
    Re: Help with a known member reference in forward conveyance "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-11-06 13:27 -0800
  Re: Help with a known member reference in forward conveyance Philip Lantz <prl@canterey.us> - 2015-11-07 01:37 -0800
    Re: Help with a known member reference in forward conveyance Bartc <bc@freeuk.com> - 2015-11-07 10:45 +0000
      Re: Help with a known member reference in forward conveyance "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-11-07 05:06 -0800
      Re: Help with a known member reference in forward conveyance Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-11-07 17:26 +0000
      Re: Help with a known member reference in forward conveyance Philip Lantz <prl@canterey.us> - 2015-11-07 11:20 -0800
      Re: Help with a known member reference in forward conveyance Philip Lantz <prl@canterey.us> - 2015-11-07 11:22 -0800
    Re: Help with a known member reference in forward conveyance "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-11-07 05:05 -0800
      Re: Help with a known member reference in forward conveyance Philip Lantz <prl@canterey.us> - 2015-11-07 11:35 -0800
        Re: Help with a known member reference in forward conveyance "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-11-07 12:06 -0800
        Re: Help with a known member reference in forward conveyance Ian Collins <ian-news@hotmail.com> - 2015-11-08 09:17 +1300
          Re: Help with a known member reference in forward conveyance Philip Lantz <prl@canterey.us> - 2015-11-07 13:51 -0800
            Re: Help with a known member reference in forward conveyance Ian Collins <ian-news@hotmail.com> - 2015-11-08 11:18 +1300
              Re: Help with a known member reference in forward conveyance raltbos@xs4all.nl (Richard Bos) - 2015-11-10 16:58 +0000
                Re: Help with a known member reference in forward conveyance Keith Thompson <kst-u@mib.org> - 2015-11-10 09:15 -0800
                Re: Help with a known member reference in forward conveyance raltbos@xs4all.nl (Richard Bos) - 2015-11-10 19:05 +0000
                Re: Help with a known member reference in forward conveyance James Kuyper <jameskuyper@verizon.net> - 2015-11-10 12:20 -0500

csiph-web