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


Groups > comp.lang.c > #149495

Re: is there a way to ask a variable what it is?

From Manfred <noname@add.invalid>
Newsgroups comp.lang.c
Subject Re: is there a way to ask a variable what it is?
Date 2020-01-29 17:47 +0100
Organization Aioe.org NNTP Server
Message-ID <r0scuu$1v1t$1@gioia.aioe.org> (permalink)
References <r0qtkb$3qj$1@dont-email.me> <ar223fdb4s1n4tgks99ni798ftjuot4i12@4ax.com> <r0r38m$r04$2@dont-email.me> <r0rteo$1ep6$1@gioia.aioe.org> <r0rvgj$9bq$1@dont-email.me>

Show all headers | View raw


On 1/29/2020 1:57 PM, David Brown wrote:
> On 29/01/2020 13:22, Manfred wrote:
>> On 1/29/2020 5:55 AM, T wrote:
>>> On 2020-01-28 20:36, Robert Wessel wrote:
>>>> On Tue, 28 Jan 2020 19:19:38 -0800, T <T@invalid.invalid> wrote:
>>>>
>>>>> Hi All,
>>>>>
>>>>> Trivia question:
>>>>>
>>>>> In C, after you declare a variable, is there a way
>>>>> to turn around and ask it what that variable is?
>>>>>
>>>>> Some thing like Raku's
>>>>>
>>>>>       > my uint $u; say $u.^name
>>>>>       Int
>>>>>
>>>>> only correct?
>>>>
>>>>
>>>> As Ben mentioned, there's no such feature in C.  Reflection was
>>>> considered for C++20, but was deferred until the next major revision.
>>>>
>>>
>>> Dang!
>>
>> It may be worth noting (as Bart mentioned) that C has a static type
>> system, so the type of each variable is always known. For this reason C
>> does not need reflection.
>> The type system of C++ is statically checked as well, however, being
>> considerably richer than C, it features RTTI, and may have some use for
>> reflection. No urge for it though, as it can be deduced from Robert's
>> comment.
> 
> Actually, there are many good uses for reflection even in a statically
> typed language.  In particular, it allows more generic coding.  A clear
> example would be a JSON encoder/decoder - with reflection, you could
> write templated functions that take a struct and do the encoding or
> decoding, without needing the details of the type.
At first thought it looks like encoding is a possibility, but decoding 
would substantially require the struct to be assembled at runtime, i.e. 
dynamic type support, I believe.

   Another common
> example would be matching database tables to type structures.
Also requiring dynamic support as above.

Now, a runtime supporting dynamic type checking and reflection can be 
implemented in a statically typed language (in fact I believe that Java, 
C#, Perl and friends do implement it in C - or C++) so it may as well 
end up in the standard library at some point in some form.

When I wrote "some use" I was also thinking of e.g. template code that 
may enumerate members of a template argument (your JSON encoder). 
However a static type system cannot anticipate type information that is 
not available until run time (e.g. in a JSON stream), hence my tepid 
attitude.

> 
> The two main reasons reflection haven't made it into C++ yet are not
> about lack of interest, lack of use-cases, or lack of urgency in getting
> it into the language.  The first reason is that it is hard to design the
> feature - there are just so many complications and corner cases.  The
> second is that the next big step is to combine it with code generation,
> and even if that takes another few years to appear, it is important that
> reflection is made in a way that will work with the code generation later.

My thought is that it is going to require substantial runtime support 
anyway, and the similarity with GC comes to mind.

> 
> But this is mainly a C++ idea - C does not have the same kind of generic
> coding support.
> 

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


Thread

is there a way to ask a variable what it is? T <T@invalid.invalid> - 2020-01-28 19:19 -0800
  Re: is there a way to ask a variable what it is? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-29 03:47 +0000
    Re: is there a way to ask a variable what it is? T <T@invalid.invalid> - 2020-01-28 20:20 -0800
      Re: is there a way to ask a variable what it is? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-29 19:18 +0000
        Re: is there a way to ask a variable what it is? Bart <bc@freeuk.com> - 2020-01-29 20:58 +0000
          Re: is there a way to ask a variable what it is? nobody@example.org (Scott) - 2020-01-30 15:59 +0000
            Re: is there a way to ask a variable what it is? scott@slp53.sl.home (Scott Lurndal) - 2020-01-30 16:35 +0000
    Re: is there a way to ask a variable what it is? Siri Cruise <chine.bleu@yahoo.com> - 2020-01-28 21:55 -0800
      Re: is there a way to ask a variable what it is? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-30 00:24 +0000
        solved: Re: is there a way to ask a variable what it is? T <T@invalid.invalid> - 2020-01-29 21:51 -0800
          Re: solved: Re: is there a way to ask a variable what it is? fir <profesor.fir@gmail.com> - 2020-01-30 03:16 -0800
  Re: is there a way to ask a variable what it is? Ian Collins <ian-news@hotmail.com> - 2020-01-29 17:28 +1300
    Re: is there a way to ask a variable what it is? T <T@invalid.invalid> - 2020-01-28 20:55 -0800
      Re: is there a way to ask a variable what it is? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-01-29 06:49 +0000
      Re: is there a way to ask a variable what it is? Bonita Montero <Bonita.Montero@gmail.com> - 2020-01-29 08:08 +0100
      Re: is there a way to ask a variable what it is? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-30 00:14 +0000
        solved: Re: is there a way to ask a variable what it is? T <T@invalid.invalid> - 2020-01-29 21:51 -0800
  Re: is there a way to ask a variable what it is? Robert Wessel <robertwessel2@yahoo.com> - 2020-01-28 22:36 -0600
    Re: is there a way to ask a variable what it is? T <T@invalid.invalid> - 2020-01-28 20:55 -0800
      Re: is there a way to ask a variable what it is? Manfred <noname@add.invalid> - 2020-01-29 13:22 +0100
        Re: is there a way to ask a variable what it is? David Brown <david.brown@hesbynett.no> - 2020-01-29 13:57 +0100
          Re: is there a way to ask a variable what it is? Manfred <noname@add.invalid> - 2020-01-29 17:47 +0100
            Re: is there a way to ask a variable what it is? David Brown <david.brown@hesbynett.no> - 2020-01-30 12:06 +0100
    Re: is there a way to ask a variable what it is? scott@slp53.sl.home (Scott Lurndal) - 2020-01-29 15:10 +0000
      Re: is there a way to ask a variable what it is? Manfred <noname@add.invalid> - 2020-01-29 17:07 +0100
  Re: is there a way to ask a variable what it is? Siri Cruise <chine.bleu@yahoo.com> - 2020-01-28 21:52 -0800
  Re: is there a way to ask a variable what it is? Bart <bc@freeuk.com> - 2020-01-29 11:11 +0000
    Re: is there a way to ask a variable what it is? Bonita Montero <Bonita.Montero@gmail.com> - 2020-01-29 13:30 +0100
      Re: is there a way to ask a variable what it is? Bart <bc@freeuk.com> - 2020-01-29 12:44 +0000
        Re: is there a way to ask a variable what it is? Bonita Montero <Bonita.Montero@gmail.com> - 2020-01-29 14:03 +0100
          Re: is there a way to ask a variable what it is? gazelle@shell.xmission.com (Kenny McCormack) - 2020-01-29 14:03 +0000
          Re: is there a way to ask a variable what it is? Bart <bc@freeuk.com> - 2020-01-29 14:30 +0000
            Re: is there a way to ask a variable what it is? Bonita Montero <Bonita.Montero@gmail.com> - 2020-01-29 15:45 +0100
              Re: is there a way to ask a variable what it is? Bonita Montero <Bonita.Montero@gmail.com> - 2020-01-29 16:28 +0100
                Re: is there a way to ask a variable what it is? T <T@invalid.invalid> - 2020-01-29 08:35 -0800
                Re: is there a way to ask a variable what it is? Bart <bc@freeuk.com> - 2020-01-29 17:34 +0000
                Re: is there a way to ask a variable what it is? Bonita Montero <Bonita.Montero@gmail.com> - 2020-01-29 18:48 +0100
    Re: is there a way to ask a variable what it is? Thiago Adams <thiago.adams@gmail.com> - 2020-01-29 04:43 -0800
      Re: is there a way to ask a variable what it is? David Brown <david.brown@hesbynett.no> - 2020-01-29 14:46 +0100
        Re: is there a way to ask a variable what it is? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-01-29 15:15 +0000
          Re: is there a way to ask a variable what it is? fir <profesor.fir@gmail.com> - 2020-01-29 08:11 -0800
          Re: is there a way to ask a variable what it is? T <T@invalid.invalid> - 2020-01-29 08:38 -0800
  Re: is there a way to ask a variable what it is? Bart <bc@freeuk.com> - 2020-01-29 11:23 +0000
  Re: is there a way to ask a variable what it is? John Bode <jfbode1029@gmail.com> - 2020-01-29 11:55 -0800

csiph-web