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


Groups > comp.lang.c > #74352

Re: Pointers as error values

From Keith Thompson <kst-u@mib.org>
Newsgroups comp.lang.c
Subject Re: Pointers as error values
Date 2015-10-30 11:16 -0700
Organization None to speak of
Message-ID <lneggc9q7w.fsf@kst-u.example.com> (permalink)
References (6 earlier) <46t53b5nqbf6dr81i66cemgup70kclk7qf@4ax.com> <n0vfdg$eks$1@speranza.aioe.org> <kLIYx.1076$UN.250@fx28.iad> <e76ed551-babb-49ec-8bb8-6213dcbe4474@googlegroups.com> <n1016b$mur$1@speranza.aioe.org>

Show all headers | View raw


"Morten W. Petersen" <morphex@gmail.com> writes:
> On 30.10.2015 13:04, Malcolm McLean wrote:
>> On Friday, October 30, 2015 at 11:45:34 AM UTC, Richard Damon wrote:
>>> On 10/30/15 6:05 AM, Morten W. Petersen wrote:
>>> The issue is that the standard only allows the use of relational
>>> comparisons (like < ) between pointers that are part of the same object
>>> (like an array).
>>>
>>> The practical effect of this is that there are some
>>> machines/implementations where you can get false positives, the most
>>> notable case is for a machine with segmented pointers where < may only
>>> check the offset, and not for the segments to match.
>>>
>> it's a nuisance, because you can't test if ptr is in array a without
>> iterating through a testing every value for equality.  A function
>> ptr_in_range(void *ptr, void *start, void *end) would be handy.
>
> Well, such a function would abstract away the logic so that a define,
> maybe set by some automated test, would choose the right approach.
>
> I've read a bit, and found that a pointer has at least an address
> and a type, in the parsing/compilation part.  It could also contain
> other bits..

A pointer object contains an address at run time.  It also has a type
associated with it, but that information doesn't exist at run time, only
at compile time.  It restricts the things you're allowed to attempt to
do with it.  For example, if you try assign an int* value to a float*
object, the compiler will prevent you from doing so.  If you override
that compile-time check, for example by using a cast, there is
(probably) no run-time check.

> It also looks like x86 and ARM have a flat memory model, which means
> that the pointer in most cases is a simple non-negative number.
>
> So maybe have a compile-time test that checks the architecture and
> makes #define statements based on that?

Yes, you could have a set of #defines, and write one set of code that
works only on systems that satisfy certain characteristics, and another
set of code that works everywhere.

Or you could drop the #defines and just write the second set of code.

If you need to have a whole heck of a lot of distinct invalid non-null
pointer values, then the first approach could make sense.  On systems
where relational operators on pointers to distinct objects yield
consistent results, you could save some execution time.

But I'm having difficulty imagining a realistic scenario where you'd
actually need such a thing.

For example, C's <signal.h> defines just three distinct pointer values
that are not necessarily pointers to actual functions: SIG_DFL, SIG_ERR,
and SIG_IGN (and one of those could be a null pointer).  It doesn't
provide a single operation equivalent to

    (p == SIG_DFL || p == SIG_ERR || p == SIG_IGN)

probably because (a) it's easy enough to write it yourself if you need
it and (b) you probably don't need it.

Do you *really* need a large number of distinct non-null pointer values?
Until you've determined that the answer to that is yes, I suggest not
worrying about how to implement them.

-- 
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 | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Pointers as error values "Morten W. Petersen" <morphex@gmail.com> - 2015-10-19 00:53 -0700
  Re: Pointers as error values gazelle@shell.xmission.com (Kenny McCormack) - 2015-10-19 08:26 +0000
    Re: Pointers as error values "Morten W. Petersen" <morphex@gmail.com> - 2015-10-19 02:27 -0700
    Re: Pointers as error values Richard Damon <Richard@Damon-Family.org> - 2015-10-19 23:38 -0400
  Re: Pointers as error values jacobnavia <jacob@jacob.remcomp.fr> - 2015-10-19 10:34 +0200
    Re: Pointers as error values "Morten W. Petersen" <morphex@gmail.com> - 2015-10-19 02:29 -0700
    Re: Pointers as error values mark.bluemel@gmail.com - 2015-10-19 05:53 -0700
  Re: Pointers as error values glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-10-19 10:00 +0000
  Re: Pointers as error values Jorgen Grahn <grahn+nntp@snipabacken.se> - 2015-10-19 14:00 +0000
  Re: Pointers as error values gwowen <gwowen@gmail.com> - 2015-10-19 08:02 -0700
    Re: Pointers as error values James Kuyper <jameskuyper@verizon.net> - 2015-10-19 11:53 -0400
  Re: Pointers as error values Ken Brody <kenbrody@spamcop.net> - 2015-10-19 11:25 -0400
  Re: Pointers as error values supercat@casperkitty.com - 2015-10-19 08:41 -0700
  Re: Pointers as error values Keith Thompson <kst-u@mib.org> - 2015-10-19 08:59 -0700
    Re: Pointers as error values "Morten W. Petersen" <morphex@gmail.com> - 2015-10-21 07:32 +0200
      Re: Pointers as error values Ian Collins <ian-news@hotmail.com> - 2015-10-21 19:17 +1300
        Re: Pointers as error values "Morten W. Petersen" <morphex@gmail.com> - 2015-10-21 08:31 +0200
      Re: Pointers as error values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-21 12:46 +0100
      Re: Pointers as error values Robert Wessel <robertwessel2@yahoo.com> - 2015-10-21 09:35 -0500
        Re: Pointers as error values Ken Brody <kenbrody@spamcop.net> - 2015-10-21 15:24 -0400
          Re: Pointers as error values glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-10-22 05:44 +0000
      Re: Pointers as error values Keith Thompson <kst-u@mib.org> - 2015-10-21 10:41 -0700
        Re: Pointers as error values supercat@casperkitty.com - 2015-10-21 11:28 -0700
      Re: Pointers as error values John Temples <usenet@xargs-spam.com> - 2015-10-21 17:45 +0000
        Re: Pointers as error values James Kuyper <jameskuyper@verizon.net> - 2015-10-21 14:15 -0400
          Re: Pointers as error values "Morten W. Petersen" <morphex@gmail.com> - 2015-10-29 16:59 +0100
            Re: Pointers as error values supercat@casperkitty.com - 2015-10-29 12:35 -0700
              Re: Pointers as error values raltbos@xs4all.nl (Richard Bos) - 2015-10-29 21:45 +0000
                Re: Pointers as error values "Morten W. Petersen" <morphex@gmail.com> - 2015-10-30 06:09 +0100
                Re: Pointers as error values Rosario19 <Ros@invalid.invalid> - 2015-10-30 08:59 +0100
                Re: Pointers as error values Rosario19 <Ros@invalid.invalid> - 2015-10-30 09:07 +0100
                Re: Pointers as error values Rosario19 <Ros@invalid.invalid> - 2015-10-30 09:38 +0100
                Re: Pointers as error values Rosario19 <Ros@invalid.invalid> - 2015-10-30 09:40 +0100
                Re: Pointers as error values Robert Wessel <robertwessel2@yahoo.com> - 2015-10-30 04:56 -0500
                Re: Pointers as error values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-30 11:00 +0000
            Re: Pointers as error values Robert Wessel <robertwessel2@yahoo.com> - 2015-10-29 23:48 -0500
              Re: Pointers as error values "Morten W. Petersen" <morphex@gmail.com> - 2015-10-30 11:05 +0100
                Re: Pointers as error values Richard Damon <Richard@Damon-Family.org> - 2015-10-30 07:45 -0400
                Re: Pointers as error values Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-10-30 05:04 -0700
                Re: Pointers as error values "Morten W. Petersen" <morphex@gmail.com> - 2015-10-30 16:09 +0100
                Re: Pointers as error values Keith Thompson <kst-u@mib.org> - 2015-10-30 11:16 -0700
                Re: Pointers as error values glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-10-30 20:58 +0000
                Re: Pointers as error values Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-10-30 17:12 -0400
                Re: Pointers as error values supercat@casperkitty.com - 2015-10-30 14:54 -0700
                Re: Pointers as error values Robert Wessel <robertwessel2@yahoo.com> - 2015-10-30 18:48 -0500
                Re: Pointers as error values glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-11-01 04:00 +0000
                Re: Pointers as error values Robert Wessel <robertwessel2@yahoo.com> - 2015-11-01 01:24 -0500
                Re: Pointers as error values "Morten W. Petersen" <morphex@gmail.com> - 2015-10-31 20:35 +0100
                Re: Pointers as error values supercat@casperkitty.com - 2015-10-31 13:33 -0700
                Re: Pointers as error values Richard Damon <Richard@Damon-Family.org> - 2015-10-30 22:19 -0400
                Re: Pointers as error values supercat@casperkitty.com - 2015-10-30 08:22 -0700
                Re: Pointers as error values Geoff <geoff@invalid.invalid> - 2015-10-30 13:11 -0700
                Re: Pointers as error values Geoff <geoff@invalid.invalid> - 2015-10-30 13:23 -0700
      Re: Pointers as error values Geoff <geoff@invalid.invalid> - 2015-10-21 11:13 -0700
        Re: Pointers as error values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-21 20:31 +0100
          Re: Pointers as error values Geoff <geoff@invalid.invalid> - 2015-10-22 07:13 -0700
        Re: Pointers as error values "Morten W. Petersen" <morphex@gmail.com> - 2015-10-26 07:16 +0100
          Re: Pointers as error values Jorgen Grahn <grahn+nntp@snipabacken.se> - 2015-10-26 09:37 +0000
      Re: Pointers as error values glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-10-22 05:38 +0000
        Re: Pointers as error values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-22 13:51 +0100
        Re: Pointers as error values Keith Thompson <kst-u@mib.org> - 2015-10-22 08:29 -0700
          Re: Pointers as error values supercat@casperkitty.com - 2015-10-22 09:21 -0700
            Re: Pointers as error values Keith Thompson <kst-u@mib.org> - 2015-10-22 10:52 -0700
              Re: Pointers as error values "Morten W. Petersen" <morphex@gmail.com> - 2015-10-26 07:20 +0100
                Re: Pointers as error values Keith Thompson <kst-u@mib.org> - 2015-10-26 08:09 -0700
                Re: Pointers as error values supercat@casperkitty.com - 2015-10-26 08:40 -0700
                Re: Pointers as error values glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-10-26 20:02 +0000
                Re: Pointers as error values supercat@casperkitty.com - 2015-10-26 13:56 -0700
          Re: Pointers as error values glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-10-22 21:58 +0000
            Re: Pointers as error values James Kuyper <jameskuyper@verizon.net> - 2015-10-22 19:12 -0400
            Re: Pointers as error values asetofsymbols@gmail.com - 2015-10-22 18:36 -0700
              Re: Pointers as error values asetofsymbols@gmail.com - 2015-10-29 12:47 -0700
  Re: Pointers as error values Lőrinczy Zsigmond <nospam@for.me> - 2015-10-20 17:06 +0200
    Re: Pointers as error values Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-10-20 19:45 +0100
      Re: Pointers as error values supercat@casperkitty.com - 2015-10-20 14:19 -0700
        Re: Pointers as error values glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-10-21 05:28 +0000
          Re: Pointers as error values supercat@casperkitty.com - 2015-10-21 05:48 -0700
            Re: Pointers as error values glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-10-22 05:52 +0000
          Re: Pointers as error values Ken Brody <kenbrody@spamcop.net> - 2015-10-21 15:19 -0400
            Re: Pointers as error values glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-10-22 06:06 +0000

csiph-web