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


Groups > comp.lang.c > #65134

Re: Struct and Union

From Ben Bacarisse <ben.usenet@bsb.me.uk>
Newsgroups comp.lang.c
Subject Re: Struct and Union
Date 2015-07-10 17:35 +0100
Organization A noiseless patient Spider
Message-ID <87oajkvukx.fsf@bsb.me.uk> (permalink)
References <a653fc98-5fae-48ff-ba1c-d7b53adee150@googlegroups.com> <405a385f-f728-45c0-adfa-c6e1a1662938@googlegroups.com>

Show all headers | View raw


"Rick C. Hodgin" <rick.c.hodgin@gmail.com> writes:

> On Friday, July 10, 2015 at 3:49:56 AM UTC-4, janus wrote:
>> Hello All,
>> 
>> I have 2 options but which one is idiomatic C?
>> 
>> 1)
>> typedef struct CStatement
>> {
>>     int stype;
>> 
>>     union Statement
>>     {
>>         CPrintStatement* printstatement;
>>         CInputStatement* inputstatement;
>>         CAssignStatement* assignstatement;
>>         CGotoStatement* gotostatement;
>>         CIfThenStatement* ifthenstatement;
>>         void* sstatement;
>> 
>>     } statement;
>> }CStatement;
>
> I would go with this one.  In your debugger, you can use each of those
> pointer types to access members directly.
>
> I would also make it an unnamed union, that way you don't have:
>     myCStatementPtr->statement.inputstatement = ...;

But note that that is a new feature in C2011.  It was, I think, widely
implemented before that, but if the OP wants to write the most portable
C it should be avoided.

> Seems like a lot of "statements".  You could just have:
>     myCStatementPtr->inputstatement = ...;
>
> I use something similar in a language I'm developing.  See this code
> on GitHub around line 403:
>
>     https://github.com/RickCHodgin/libsf/blob/master/source/vjr/source/vjr_structs0.h

And everyone should note that you don't write C but C++ (that file in
C++ code), so your choices *may* be different to those of a C
programmer.

<snip>
-- 
Ben.

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


Thread

Struct and Union janus <emekamicro@gmail.com> - 2015-07-10 00:49 -0700
  Re: Struct and Union Richard Heathfield <rjh@cpax.org.uk> - 2015-07-10 09:04 +0100
    Re: Struct and Union janus <emekamicro@gmail.com> - 2015-07-10 01:40 -0700
      Re: Struct and Union Richard Heathfield <rjh@cpax.org.uk> - 2015-07-10 09:50 +0100
        Re: Struct and Union Richard Heathfield <rjh@cpax.org.uk> - 2015-07-10 13:44 +0100
    Re: Struct and Union "Bill Davy" <Bill@SynectixLtd.com> - 2015-07-10 12:37 +0100
      Re: Struct and Union Keith Thompson <kst-u@mib.org> - 2015-07-10 08:24 -0700
        Re: Struct and Union Keith Thompson <kst-u@mib.org> - 2015-07-12 12:53 -0700
  Re: Struct and Union Ian Collins <ian-news@hotmail.com> - 2015-07-10 21:32 +1200
  Re: Struct and Union "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-10 05:12 -0700
    Re: Struct and Union Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-07-10 17:35 +0100
      Re: Struct and Union David Kleinecke <dkleinecke@gmail.com> - 2015-07-10 10:18 -0700
        Re: Struct and Union "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-10 10:23 -0700
        Re: Struct and Union James Kuyper <jameskuyper@verizon.net> - 2015-07-10 13:47 -0400
        Re: Struct and Union Keith Thompson <kst-u@mib.org> - 2015-07-10 12:38 -0700
      Re: Struct and Union "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-10 10:27 -0700
  Re: Struct and Union Bartc <bc@freeuk.com> - 2015-07-10 13:55 +0100
  Re: Struct and Union Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-07-10 21:48 +0100
    Re: Struct and Union "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-10 13:51 -0700
      Re: Struct and Union Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-07-10 23:45 +0100
        Re: Struct and Union "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-10 17:43 -0700
          Re: Struct and Union Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-07-11 13:04 +0100
            Re: Struct and Union "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-11 05:15 -0700
              Re: Struct and Union Bartc <bc@freeuk.com> - 2015-07-11 14:01 +0100
                Re: Struct and Union "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-11 06:05 -0700
                Re: Struct and Union "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2015-07-11 06:13 -0700
            Re: Struct and Union Keith Thompson <kst-u@mib.org> - 2015-07-11 13:51 -0700
              Re: Struct and Union Martin Shobe <martin.shobe@yahoo.com> - 2015-07-11 16:51 -0500
              Re: Struct and Union Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-07-11 23:13 +0100
                Re: Struct and Union Keith Thompson <kst-u@mib.org> - 2015-07-11 17:39 -0700
              Re: Struct and Union Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-07-11 16:56 -0700
  Re: Struct and Union Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-07-10 18:52 -0700
  Re: Struct and Union Tim Rentsch <txr@alumni.caltech.edu> - 2015-07-10 19:12 -0700

csiph-web