I’m trying to understand the origins of void pointers in C. I think they first appeared
formally in the C89 spec, but may have existed in earlier compilers.
Of course, as late as V7 there wasn’t much enforcement of types and hence no need for the
void* concept and automatic casting. I suppose ‘lint’ would have flagged it though.
In the 4BSD era there was caddr_t, which I think was used for pretty much the same
purposes. Did ‘lint’ in the 4BSD era complain about omitted casts to and fro’ caddr_t?
Background to my question is research into the evolution of the socket API in 4.1x BSD and
the persistence of ‘struct sockaddr *’ in actual code, even though the design papers show
an intent for ‘caddr_t’ (presumably with ‘void*’ semantics, but I’m not sure).
Paul