tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: qsort_r
Date: Mon, 9 Dec 2013 02:37:30 -0500 (EST)
From: Mouse <mouse%Rodents-Montreal.ORG@localhost>
Message-ID: <201312090737.CAA22102%Chip.Rodents-Montreal.ORG@localhost>
| According to the manpage, their values are relevant:
Just in case someday someone ever thinks of a use for them.
Very unlikely. But in any case, since the doc explicitly shows
init by memset(..,0,..), and that's what everyone does, the
implementation would need to keep that working, even if it ever
happened that the null pointer was not all 0 bits (and personally,
I'm not going to every worry about that happening - it won't.)
| In any case, it's hardly the only example of that assumption; it's just
| the first one that came to mind.
Yes, there are certainly plenty of cases where structs are cleared
(by calloc, or explicit memset) and then it's assumed that any pointers
in them are NULL.
That's the kind of economic imperative that I referred to - any implementation
that makes that code fail (however legal it might be according to the
rules of C) will simply be ignored in the world - if hardware/software
manufacturers (including us who give stuff away for free) want it to be
used, we have to make stuff that the users are happy with - and "all my
working code fails on this system" isn't going to cut it.
| That's exactly what such a checkout compiler would be for.
I have no problem at all with tools that check/validate assumptions.
It is the changes (including places where it can be argued that there
was no explicit specification previously) from accepted practice over the
past (almost) 40 years to the C language spec that I don't like.
Had all this been done in 1980, it might have made sense, by 1990, the
ship had already sailed, it was already too late for anyone to even consider
changing any of the basic (written or unwritten) assumptions about how
hardware works. Pretending it is even remotely possible that arithmetic
might go back to 1's complement, or anything other than 0 bits will ever
be the null pointer, or even that memory won't be byte addressable (for
whatever size byte ends up being in use, but it is almost inconceivable
anything other than 8 bits will ever be supported) is just insane. Making
programmers work harder, just in case their code happens to want to run
on such a nonexistent computer is ludicrous. That stuff is all extinct.
kre
Home |
Main Index |
Thread Index |
Old Index