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


Groups > comp.lang.c > #43376

Re: const or constant?

From James Kuyper <jameskuyper@verizon.net>
Newsgroups comp.lang.c
Subject Re: const or constant?
Date 2014-04-22 17:56 -0400
Organization Self
Message-ID <5356E59A.8030904@verizon.net> (permalink)
References <lj6729$a10$1@speranza.aioe.org> <bro54nFojnqU1@mid.uni-berlin.de>

Show all headers | View raw


On 04/22/2014 05:26 PM, Jens Thoms Toerring wrote:
> jacob navia <jacob@spamsink.net> wrote:
>> After reading some of the contrbutions to the "constant strings" thread, 
>> I think that what is needed is a clarification of the underlying issues.
> 
>> There are TWO "uses" of const:
> 
>> 1) Declaring that a function will not modify its arguments
>> 2) Declaring that an object resides in ROM (read only memory)
> 
> There's no requirement that a constant of type 2) is in ROM.

Correct. It would be more accurate to say that const-qualification of an
object allows it to reside in ROM; it doesn't mandate it.

> What about a function like
> 
> void foo( int v ) {
>     const int d = v;
> 	...
> }
> 
> Why should be 'd' in ROM? It only makes sure that the compiler
> will get upset when you try to change its value sometime later
> in the function.
> 
> And you also seem to be forgetting that 1) and 2) can be
> combined as in
> 
>   const char * const s
> 
> i.e. a pointer that can't be changed to a region of memory
> that also can't be modified.

I'm not sure how you concluded that he's forgotten that; his proposal
would convert that to "constant char * const s". Note that since 'const'
would now have only the second meaning, it wouldn't have to be in any
particular position relative to the '*'. It necessarily applies only to
the object whose identifier is being declared, regardless of position.

>> The first one is tied to a *scope*. 
> 
> I don't see that this has anything to do with scope. ...

The 'const' qualification within a function declaration has the first
meaning only within the scope of the identifier being declared. The
second meaning applies anywhere that an lvalue expression referring to
object can be found, whether or not the object's identifier is still in
scope. An unfortunate consequence of this fact is that violation of the
relevant restriction cannot be made a constraint violation, because the
information needed to identify it as such might reside in an entirely
different translation unit. Jacob's proposal does nothing to avoid that
problem.

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


Thread

const or constant? jacob navia <jacob@spamsink.net> - 2014-04-22 18:58 +0200
  Re: const or constant? "Bill Cunningham" <nospam@nspam.invalid> - 2014-04-22 14:13 -0400
    Re: const or constant? Barry Schwarz <schwarzb@dqel.com> - 2014-04-22 15:59 -0700
  Re: const or constant? jt@toerring.de (Jens Thoms Toerring) - 2014-04-22 21:26 +0000
    Re: const or constant? James Kuyper <jameskuyper@verizon.net> - 2014-04-22 17:56 -0400
      Re: const or constant? Keith Thompson <kst-u@mib.org> - 2014-04-22 15:32 -0700
        Re: const or constant? James Kuyper <jameskuyper@verizon.net> - 2014-04-23 08:57 -0400
          Re: const or constant? David Brown <david.brown@hesbynett.no> - 2014-04-23 15:27 +0200
            Re: const or constant? Keith Thompson <kst-u@mib.org> - 2014-04-23 08:34 -0700
              Re: const or constant? David Brown <david.brown@hesbynett.no> - 2014-04-24 08:50 +0200
                Re: const or constant? James Kuyper <jameskuyper@verizon.net> - 2014-04-24 07:58 -0400
                Re: const or constant? David Brown <david.brown@hesbynett.no> - 2014-04-24 14:19 +0200
                Re: const or constant? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-04-24 21:40 +0000
                Re: const or constant? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-04-25 01:05 -0700
          Re: const or constant? "BartC" <bc@freeuk.com> - 2014-04-23 21:38 +0100
      Re: const or constant? jacob navia <jacob@spamsink.net> - 2014-04-23 00:51 +0200
    Re: const or constant? jacob navia <jacob@spamsink.net> - 2014-04-23 00:47 +0200
  Re: const or constant? Walter Banks <walter@bytecraft.com> - 2014-04-22 18:00 -0400
  Re: const or constant? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-04-22 23:12 +0100
    Re: const or constant? jacob navia <jacob@spamsink.net> - 2014-04-23 01:00 +0200
      Re: const or constant? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-04-23 14:48 +0100
        Re: const or constant? Keith Thompson <kst-u@mib.org> - 2014-04-23 08:40 -0700
          Re: const or constant? jacob navia <jacob@spamsink.net> - 2014-04-23 21:49 +0200
            Re: const or constant? Kaz Kylheku <kaz@kylheku.com> - 2014-04-23 20:11 +0000
            [OT] Killfiles (was Re: const or constant?) Keith Thompson <kst-u@mib.org> - 2014-04-23 14:49 -0700
              Re: [OT] Killfiles (was Re: const or constant?) Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-04-23 22:22 -0700
    Re: const or constant? James Kuyper <jameskuyper@verizon.net> - 2014-04-23 09:09 -0400
  Re: const or constant? Ian Collins <ian-news@hotmail.com> - 2014-04-24 09:35 +1200
    Re: const or constant? Ian Collins <ian-news@hotmail.com> - 2014-04-24 10:06 +1200
      Re: const or constant? Ian Collins <ian-news@hotmail.com> - 2014-04-24 10:52 +1200

csiph-web