<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div></div><div>I started out on Edition 7, this was</div><div>the interdata / perkin elmer port of v7 (based on Richard Milker’s work at Wollongong with some bits of 2.4BSD added in (csh and vi i remember).</div><div><br></div><div>i remember this having a modified v6 compiler which had the shared namespace fir all structure members (hence the stat.st_mtime and friends). but it also had structure assignment and enums.</div><div><br></div><div>anyone know where this fits into the compiler evolution, or was it an evolutionary dead end?</div><div><br></div><div>-Steve</div><div> </div><div><br>On 5 Nov 2017, at 17:53, Clem cole <<a href="mailto:clemc@ccc.com">clemc@ccc.com</a>> wrote:<br><br></div><blockquote type="cite"><div>
<meta http-equiv="content-type" content="text/html; charset=utf-8">Correct.  When void came into C, full typing was already there; so void * was a part and it was first exploited because of the useful property of the return.  The ptr properties became more and more important as its power was realized.    <div><br></div><div>FYI. K&R was written before V7 was released and matched the Typesetter C compiler for V6 more than the later compiler released in V7.  i.e. A slightly more mature version compiler was included in UNIX/TS which was what Bourne used as the V7 ‘project manager’ (Steve had a couple interesting stories about the later process).  By that point in time void had been added as formal type to the language. </div><div><br></div><div>As since Bourne had been the driver for void it is not surprising that he picked up a version of the compiler that he thought was important.  Thus as was noted it meant the book and released compiler were not in sync.  </div><div><div><br></div><div><br></div><div><br><div id="AppleMailSignature">Sent from my PDP-7 Running UNIX V0 expect things to be almost but not quite. </div><div><br>On Nov 5, 2017, at 7:14 AM, Warner Losh <<a href="mailto:imp@bsdimp.com">imp@bsdimp.com</a>> wrote:<br><br></div><blockquote type="cite"><div><div dir="ltr">void functions certainly were much more widely used before void *, but void * worked on all the compilers I ever used. I'm a relative newcomer, though, since the first C compiler I used was on a VAX running 4.2BSD...<div><br></div><div>Warner<br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Nov 5, 2017 at 6:20 AM, Ron Natalie <span dir="ltr"><<a href="mailto:ron@ronnatalie.com" target="_blank">ron@ronnatalie.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Yes.  Correct me if I’m wrong, but I recall functions returning void came before void*.<br>
<br>
Sent from my iPhone<br>
<div class="HOEnZb"><div class="h5"><br>
> On Nov 5, 2017, at 5:06 AM, <a href="mailto:arnold@skeeve.com">arnold@skeeve.com</a> wrote:<br>
><br>
> Paul Ruizendaal <<a href="mailto:pnr@planet.nl">pnr@planet.nl</a>> wrote:<br>
><br>
>> I’m trying to understand the origins of void pointers in C. I think<br>
>> they first appeared formally in the C89 spec, but may have existed in<br>
>> earlier compilers.<br>
><br>
> void was added after the publication of the first edition of K&R, in<br>
> the V7 time frame. The 4.x compilers had support for void pointers and<br>
> functions returning void. Also added around the same time was structure<br>
> assignment and the ability to pass and return structs by value (although<br>
> this was little used).<br>
><br>
>> In the 4BSD era there was caddr_t, which I think was used for pretty<br>
>> much the same purposes.<br>
><br>
> Only for kernel code. I am pretty sure caddr_t wasn't used in user-land code.<br>
><br>
> HTH,<br>
><br>
> Arnold<br>
<br>
</div></div></blockquote></div><br></div></div></div>
</div></blockquote></div></div>
</div></blockquote></body></html>