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


Groups > comp.lang.c > #120621

Re: const and the C type system

From Keith Thompson <kst-u@mib.org>
Newsgroups comp.lang.c
Subject Re: const and the C type system
Date 2017-09-30 13:35 -0700
Organization None to speak of
Message-ID <ln4lrjudq6.fsf@kst-u.example.com> (permalink)
References (1 earlier) <oql21t$mh6$1@dont-email.me> <2c5a4b5b-ec8b-44fe-a77c-e26a0e1c5bb9@googlegroups.com> <NPrzB.979054$gM6.814414@fx03.am4> <oqohtj$f2j$1@dont-email.me> <fKQzB.1787364$DB.699792@fx04.am4>

Show all headers | View raw


bartc <bc@freeuk.com> writes:
> On 30/09/2017 17:48, David Brown wrote:
>> On 29/09/17 15:24, bartc wrote:
>>> I think you're the only person ever to have voiced the same misgivings 
>>> about C's failings in this area as I have.
>> 
>> Why would you think that?
>
> The topic has been discussed many times, and the attitudes have always 
> been the same.

Wrong.

>> The methods available in C for defining constants are not as good as 
>> they could be - I have never seem anyone deny that. But they are also 
>> not nearly as bad as some people (such as yourself and Thiago) seem to 
>> think.
>
> As I said, there is a very simple, lightweight solution to the problem, 
> and they have been plenty of opportunities to introduce it, but no one 
> is interested in that.

You proposed:

    constant const1 1;

That's a new keyword and a new syntax that I've never seen anyone
else propose.  You expect the committee to adopt it without ever
having heard of it.  Meanwhile, C++ has an existing solution (`const
int n = 42;` making n a constant expression) that could be adopted
by C.  As it happens, clang appears to implement it as an extension;
gcc does not.

> They would rather look towards a heavyweight answer like C++'s 
> constexpr, which is like C's const variable but even more complicated. 
> That's not going to happen anytime time soon, so C's is stuck with what 
> it has.

I don't recall anyone mentioning constexpr.  But now that you
mention it, a simpler version of C++'s constexpr might be an even
better solution.  I don't think I'd suggest supporting constexpr
functions, but constexpr "variables" might be something to consider.
For example, in C++

    constexpr int n = 42;

makes `n` a constant expression and requires the initializer to be a
constant expression.  (I'm a bit surprised to find that `&n` is legal;
perhaps C needn't permit that.)  I find it cleaner than the C++
treatment of

    const int n = 42;

because (a) the compiler enforces making the initializer a constant
expression and (b) it doesn't blur the distinction between "constant"
(meaning evaluable at compile time) and "const" (meaning read-only).

[...]
> Meanwhile, suppose you had a task to automatically translate syntax 
> which already has that suggested feature, into readable C; how would you 
> do that?

Readability of intermediate code is not usually a requirement, but ok.
[...]
>                     #define is not an option, since the original uses 
> identifiers with normal scope rules.

Your translator could generate #undef directives at the end of the scope.

[...]

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Working, but not speaking, for JetHead Development, Inc.
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"

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


Thread

const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-09-28 19:51 -0700
  Re: const and the C type system Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2017-09-28 21:32 -0600
    Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-09-29 05:45 -0700
      Re: const and the C type system bartc <bc@freeuk.com> - 2017-09-29 14:05 +0100
        Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-09-29 06:17 -0700
    Re: const and the C type system asetofsymbols@gmail.com - 2017-10-01 22:35 -0700
  Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-09-29 10:59 +0200
    Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-09-29 06:06 -0700
      Re: const and the C type system bartc <bc@freeuk.com> - 2017-09-29 14:24 +0100
        Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-09-29 06:52 -0700
          Re: const and the C type system jameskuyper@verizon.net - 2017-09-29 09:17 -0700
            Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-09-29 10:50 -0700
              Re: const and the C type system jameskuyper@verizon.net - 2017-09-29 11:06 -0700
                Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-09-29 11:27 -0700
          Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-09-30 13:13 -0700
            Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-09-30 13:31 -0700
        Re: const and the C type system Keith Thompson <kst-u@mib.org> - 2017-09-29 09:10 -0700
          Re: const and the C type system bartc <bc@freeuk.com> - 2017-09-29 18:33 +0100
          Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-09-29 11:10 -0700
        Re: const and the C type system Ian Collins <ian-news@hotmail.com> - 2017-09-30 08:29 +1300
        Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-09-30 18:48 +0200
          Re: const and the C type system bartc <bc@freeuk.com> - 2017-09-30 18:44 +0100
            Re: const and the C type system Ian Collins <ian-news@hotmail.com> - 2017-10-01 09:12 +1300
              Re: const and the C type system bartc <bc@freeuk.com> - 2017-09-30 21:50 +0100
                Re: const and the C type system Ian Collins <ian-news@hotmail.com> - 2017-10-01 10:10 +1300
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-09-30 23:17 +0100
                Re: const and the C type system Ian Collins <ian-news@hotmail.com> - 2017-10-01 11:38 +1300
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-01 00:44 +0100
                Re: const and the C type system Ian Collins <ian-news@hotmail.com> - 2017-10-01 14:33 +1300
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-01 10:42 +0100
                Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-10-01 19:58 +0200
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-01 21:30 +0100
                Re: const and the C type system Ian Collins <ian-news@hotmail.com> - 2017-10-02 17:48 +1300
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-02 11:14 +0100
                Re: const and the C type system Ian Collins <ian-news@hotmail.com> - 2017-10-02 23:22 +1300
                Re: const and the C type system Richard Damon <Richard@Damon-Family.org> - 2017-10-01 13:58 -0400
                Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-10-01 18:20 +0200
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-01 18:41 +0100
                Re: const and the C type system supercat@casperkitty.com - 2017-10-01 12:03 -0700
                Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-10-01 23:05 +0200
                Re: const and the C type system supercat@casperkitty.com - 2017-10-01 15:58 -0700
                Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-10-02 09:56 +0200
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-02 00:24 +0100
                Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-10-02 12:20 +0200
                Re: const and the C type system Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2017-10-02 06:03 -0700
                Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-10-02 06:34 -0700
                Re: const and the C type system supercat@casperkitty.com - 2017-10-02 23:38 -0700
                Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-10-01 13:03 -0700
                Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-10-01 23:12 +0200
                Re: const and the C type system supercat@casperkitty.com - 2017-10-01 11:12 -0700
                Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-10-01 13:48 +0200
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-01 14:13 +0100
                Re: const and the C type system supercat <flatfinger@casperkitty.com> - 2017-10-01 10:32 -0700
              Re: const and the C type system supercat@casperkitty.com - 2017-09-30 13:52 -0700
            Re: const and the C type system Keith Thompson <kst-u@mib.org> - 2017-09-30 13:35 -0700
              Re: const and the C type system bartc <bc@freeuk.com> - 2017-09-30 21:58 +0100
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-01 12:03 +0100
              Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-09-30 14:00 -0700
                Re: const and the C type system Keith Thompson <kst-u@mib.org> - 2017-09-30 15:33 -0700
                Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-10-01 12:45 -0700
            Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-10-01 13:13 +0200
              Re: const and the C type system Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2017-10-01 05:22 -0700
                Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-10-01 20:06 +0200
                Re: const and the C type system supercat@casperkitty.com - 2017-10-01 12:16 -0700
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-01 21:01 +0100
                Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-10-01 13:21 -0700
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-01 21:50 +0100
                Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-10-02 05:35 -0700
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-02 14:01 +0100
                Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-10-02 06:29 -0700
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-02 15:19 +0100
                Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-10-01 23:19 +0200
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-01 22:33 +0100
                Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-10-02 00:10 +0200
              Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-01 14:13 +0100
                Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-10-01 22:46 +0200
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-01 21:57 +0100
                Re: const and the C type system Keith Thompson <kst-u@mib.org> - 2017-10-01 14:09 -0700
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-01 23:54 +0100
                Re: const and the C type system Keith Thompson <kst-u@mib.org> - 2017-10-01 19:12 -0700
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-02 11:36 +0100
                Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-10-02 12:45 +0200
                Re: const and the C type system Keith Thompson <kst-u@mib.org> - 2017-10-02 09:40 -0700
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-02 19:33 +0100
                Re: const and the C type system scott@slp53.sl.home (Scott Lurndal) - 2017-10-02 19:09 +0000
                Re: const and the C type system Ian Collins <ian-news@hotmail.com> - 2017-10-03 08:12 +1300
                Re: const and the C type system bartc <bc@freeuk.com> - 2017-10-02 20:30 +0100
                Re: const and the C type system Keith Thompson <kst-u@mib.org> - 2017-10-02 12:37 -0700
                Re: const and the C type system jadill33@gmail.com - 2017-10-02 12:49 -0700
                Re: const and the C type system Jorgen Grahn <grahn+nntp@snipabacken.se> - 2017-10-06 20:47 +0000
                Re: const and the C type system Keith Thompson <kst-u@mib.org> - 2017-10-06 15:41 -0700
                Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-10-02 12:42 +0200
              Re: const and the C type system Gareth Owen <gwowen@gmail.com> - 2017-10-01 21:18 +0100
          Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-09-30 12:22 -0700
      Re: const and the C type system David Brown <david.brown@hesbynett.no> - 2017-09-30 18:44 +0200
    Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-09-29 07:01 -0700
      Re: const and the C type system Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-09-29 20:18 +0100
        Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-09-29 12:40 -0700
          Re: const and the C type system Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-09-29 21:28 +0100
  Re: const and the C type system fir <profesor.fir@gmail.com> - 2017-09-29 08:21 -0700
    Re: const and the C type system fir <profesor.fir@gmail.com> - 2017-09-29 08:38 -0700
  Re: const and the C type system John Bode <jfbode1029@gmail.com> - 2017-10-02 09:20 -0700
    Re: const and the C type system Thiago Adams <thiago.adams@gmail.com> - 2017-10-02 09:53 -0700
    Re: const and the C type system Jorgen Grahn <grahn+nntp@snipabacken.se> - 2017-10-09 13:27 +0000

csiph-web