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


Groups > comp.lang.c > #106300

Re: Parsing struct memory?

From Lowell Gilbert <lgusenet@be-well.ilk.org>
Newsgroups comp.lang.c
Subject Re: Parsing struct memory?
Date 2017-03-16 19:39 -0400
Organization A noiseless patient Spider
Message-ID <441stw94gb.fsf@lowell-desk.lan> (permalink)
References <62daf505-60e2-4dd5-b2c7-c619085dd548@googlegroups.com> <fb4e0c1d-6ef0-4bc1-8136-86199b994903@googlegroups.com>

Show all headers | View raw


supercat@casperkitty.com writes:

> On Thursday, March 16, 2017 at 2:58:24 PM UTC-5, Thiago Adams wrote:
>> Having some struct;
>> 
>> struct {
>>   char c;
>>   void* p;
>>   double d; 
>> };
>> 
>> Is it possible to parse it just knowing each type?
>> Something similar of var_arg but for structs.
>> 
>> char c = arg(pointer, char);
>> void* p = arg(pointer, void*);
>> double d = arg(pointer, double);
>
> Nothing in the C Standard would impose sufficient restrictions on structure
> layout to allow such a construct to be implemented in "portable" code.  It
> could be implemented in a fashion that would work with the vast majority of
> compilers by determining the required alignment for each type and adjusting
> the "current scan" pointer according to that alignment, make a note of the
> resulting address, adding the size of the return type to that pointer, and
> then returning the object stored at the previous address.
>
> Such code would fail of course on implementations which employ unusual layout
> rules, but that could be guarded against via "offsetof" checks.  It might
> also fail occasionally on implementations which assume that code will never
> do any "interesting" kinds of address computations.  There are proposals to
> add a concept of "pointer provenance" to C, which would essentially invite
> a compiler to assume that pointers to certain objects will only be formed
> in certain ways the compiler knows about.  Since some application fields have
> no need for tricky address computations, and since such an assumption could
> allow useful optimizations in cases where it holds, it would make sense for
> the Standard to allow implementations targeting those application fields to
> make such assumptions.  That wouldn't mean programs that do field address
> computations should be viewed as "broken", but compiler writers may very
> well view them that way anyhow.

I may be missing something in your argument, but I don't think it's
right. C requires that there be an alignment suitable for any object.

-- 
Lowell Gilbert, embedded/networking software engineer
	 http://be-well.ilk.org/~lowell/

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


Thread

Parsing struct memory? Thiago Adams <thiago.adams@gmail.com> - 2017-03-16 12:58 -0700
  Re: Parsing struct memory? Thiago Adams <thiago.adams@gmail.com> - 2017-03-16 13:21 -0700
    Re: Parsing struct memory? Ian Collins <ian-news@hotmail.com> - 2017-03-17 11:16 +1300
      Re: Parsing struct memory? James Kuyper <jameskuyper@verizon.net> - 2017-03-16 22:09 -0400
        Re: Parsing struct memory? Ian Collins <ian-news@hotmail.com> - 2017-03-17 15:23 +1300
        Re: Parsing struct memory? David Brown <david.brown@hesbynett.no> - 2017-03-17 10:11 +0100
          Re: Parsing struct memory? "James R. Kuyper" <jameskuyper@verizon.net> - 2017-03-17 11:35 -0400
    Re: Parsing struct memory? gordonb.7zilv@burditt.org (Gordon Burditt) - 2017-03-16 20:17 -0500
      Re: Parsing struct memory? James Kuyper <jameskuyper@verizon.net> - 2017-03-16 21:56 -0400
  Re: Parsing struct memory? supercat@casperkitty.com - 2017-03-16 13:51 -0700
    Re: Parsing struct memory? Lowell Gilbert <lgusenet@be-well.ilk.org> - 2017-03-16 19:39 -0400
      Re: Parsing struct memory? BartC <bc@freeuk.com> - 2017-03-17 12:16 +0000
      Re: Parsing struct memory? "Peter \"Shaggy\" Haywood" <phaywood@alphalink.com.au> - 2017-03-24 18:06 +1100
        Re: Parsing struct memory? supercat@casperkitty.com - 2017-03-24 14:35 -0700
  Re: Parsing struct memory? Keith Thompson <kst-u@mib.org> - 2017-03-16 19:14 -0700
    Re: Parsing struct memory? scott@slp53.sl.home (Scott Lurndal) - 2017-03-17 12:45 +0000
  Re: Parsing struct memory? scott@slp53.sl.home (Scott Lurndal) - 2017-03-17 12:41 +0000
  Re: Parsing struct memory? Thiago Adams <thiago.adams@gmail.com> - 2017-03-17 08:17 -0700
  Re: Parsing struct memory? Thiago Adams <thiago.adams@gmail.com> - 2017-03-20 05:07 -0700

csiph-web