Most had. But the 64-bit Alpha with the DEC C compiler, has 32-bit longs
(and 64-bit long longs).
Are you SURE? I am pretty sure that I investigated that, and found
it to be an urban myth. Yes, there is such a mode, but the normal
one is I32LP64, just like any sane system.
Some will interpret Microsoft's decision to use 32-bit longs as evidence
that DEC/Cutler's influence in Alpha NT still lingers. But there are other
valid reasons to choose it (many of them related to portability under
an established set of coding rules).
The first statement is doubtful. When it was claimed, a lot of people
provided evidence that it was an aberrant decision, and that Microsoft
compilers more often used I32LP64 than IL32LLP64.
The second statement is wrong. I am the person who investigated that,
and all of the actual evidence is that the portability problems caused
by IL32LLP64 are FAR greater than those caused by I32LP64. While I did
not investigate Microsoft's code, I did inspect the relevant coding
standards, and the problems my investigation detected would have arisen
as much in that as in the programs I did look at.
C has always been a basket case with respect to integer sizes. Until
recently you had to choose someone's silly typedefs or choose to
chart your own course. The new standards do help... but only if you use
them.
They do help - but only if you are not interested in serious (i.e.
long-term and widespread) portability! If you are, C99 is a disaster,
where C90 was merely a basket case.
The point is that, for such portability, you need to choose sizes by
PROPERTY not bit count. I.e. "The smallest signed integer type that
can address the largest allocatable object" or "the smallest integer
type that can hold A_INT_T_MAX*A_INT_T_MAX".
Now, making <float.h> usable by the preprocessor and the new symbols
for the limits DOES help, but the ghastly bit-count sizes are quite
useless. Despite repeated claims, nobody has ever produced evidence
that they help competent programmers - though I do agree that they
do help bozos.
The claim that they help with networking and other interfaces is
completely bogus, as they don't specify endianness (or some other
critical properties in some cases). Nor do structures specify
padding and alignment. So portable programs STILL have to do their
own packing.
Regards,
Nick Maclaren.