comp.lang.ada
 help / color / mirror / Atom feed
From: taw@pb220.legnica.sdi.tpnet.pl (Tomasz Wegrzanowski)
Subject: Re: type Foo_ptr in new void*;
Date: 31 Jul 2001 01:21:50 GMT
Date: 2001-07-31T01:21:50+00:00	[thread overview]
Message-ID: <9k517e$rbh$5@news.tpi.pl> (raw)
In-Reply-To: 3B64C26F.C195B4E0@worldnet.att.net

In article <3B64C26F.C195B4E0@worldnet.att.net>, James Rogers wrote:
> Yes, you are correct. C does allow you to forward declare a structure
> or a pointer without ever completing the definition. This is one of
> the nasty capabilities "provided" by C. You can even create an array
> of Foo *. However, pointer arithmetic from the start of this array
> produces unspecified behavior. What is the sizeof Foo? Since it is
> undefined, there is no correct answer to that question. Without a
> proper definition of the sizeof Foo, there can be no reliable pointer
> arithmetic.

Correct answer is compilation error.
It's illegal to do pointer arith on void* or incomplete types.

> In other words, you can declare some wonderful data structures in C
> based on incomplete type definitions. Unfortunately, a program built
> upon such a structure is neither reliable nor portable.

It's both portable and reliable.

> Ada does not allow you to compile a program with an incomplete type
> definition. There is no equivalent because the existence of an
> equivalent to this C capability would only introduce errors in your
> program. There is nothing positive that can be achieved by allowing
> a program to be incompletely specified.

Sure, if your favourite language has no feature X,
then feature X is useless.

Incomplete types warrant opacity.



  parent reply	other threads:[~2001-07-31  1:21 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-07-29  4:31 type Foo_ptr in new void*; Tomasz Wegrzanowski
2001-07-29  5:56 ` tmoran
2001-07-29  8:57   ` Tomasz Wegrzanowski
2001-07-29 12:26     ` Marc A. Criley
2001-07-30  1:05       ` Tomasz Wegrzanowski
2001-07-30  1:20         ` tmoran
2001-07-30  2:09         ` James Rogers
2001-07-30  2:36           ` Warren W. Gay VE3WWG
2001-07-30  3:10             ` James Rogers
2001-07-31  2:14               ` Warren W. Gay VE3WWG
2001-07-31  1:21           ` Tomasz Wegrzanowski [this message]
2001-07-31  3:06             ` James Rogers
2001-07-31  5:02               ` Warren W. Gay VE3WWG
2001-07-31  7:22               ` Florian Weimer
2001-07-31  4:56           ` Darren New
2001-08-04  6:05             ` David Thompson
2001-08-05  2:27               ` Warren W. Gay VE3WWG
2001-07-29 13:40     ` Dale Stanbrough
2001-07-29 14:12 ` Florian Weimer
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox