Re: Reverse the ucdrom.h patch in 2.1.12

Philippe Strauss (
Sat, 23 Nov 1996 00:24:09 +0100 (MET)

Linus Torvalds wrote:


> Hmm.. Personally, I consider pointer casts a bug by default, which was why
> I applied the non-cast version instead.
> If pointer casts are needed, I'd much prefer them done through another
> interface, one such being for example:
> initialize_cdrom(capacity,speed);
> with initialize_cdrom() being a inline function or whatever that then does
> the casting.
> The _reason_ I consider pointer casts a bug is that they mess with the C
> type checking. "What type checking?" I hear you say.. But in fact C type
> checking is very practical if done correctly, and one reason I use "-Wall"
> with gcc for everything I write. If the stuff is ever changed (to use
> "long" for example), the code that uses casts will never result in a
> compiler warning, yet it will be hopelessly incorrect unless fixed.
> Now, a inline function that does the same cast results in the same _code_,
> but then the cast is hidden in one place (and if the inline function is
> placed near enough the definition of the types, anybody who changes the
> type is likely to change the inline function to mess with the type as
> well).
> If you think I'm looking for something like objects but without the
> overhead of a object-oriented language, you're getting pretty close.
> Thought of the day: "Any interface that _requires_ the programmer to use
> a cast is a bad interface".
> Anybody want to send me patches?
> Linus

OK for me, but just one example of a good usage of pointer casting.
Accessing a peripheral that may return value on 8 or 16 bits in its
DMA buffer, such as a soundcard with DMA mmaping, is really beautiful.
Depending on the resolution that you want, you cast the mmaped area
form (void *) to (short *) or (char *). Yeap, this is still very marginal..

Philippe Strauss, CH-1092 Belmont

Email: <> Homepage: