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.
next prev 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