On 31 Dec 2005 06:37:11 -0800, "Gavin Deane" <deane_gavin@hotmail.com>
wrote in comp.lang.c++:
[color=blue]
>
> Manuel wrote:
>[color=green]
> > W Marsh wrote:
> >[color=darkred]
> > > Portability. The GL Red Book says:
> > >
> > > "Implementations of OpenGL have leeway in selecting which C data type to
> > > use to represent OpenGL data types. If you resolutely use the OpenGL
> > > defined data types throughout your application, you will avoid
> > > mismatched types when porting your code between different implementations."[/color]
> >
> >
> > Thanks.
> > But this is a problem with C++ too?
> > If I declare an "int" under windows, maybe different from an "int" under
> > linux or OSX ?[/color]
>
> Yes. There is no requirement for an int to be the same size on every
> platform.
>
> sizeof returns a number of bytes. You are guaranteed that
>
> sizeof char == 1
> sizeof char <= sizeof short <= sizeof int <= sizeof long
> CHAR_BIT >= 8
>
> where CHAR_BIT, available by including the <climits> or <limits.h>
> header, is the number of bits in a char (i.e. in a byte).
>
> I believe there are also some *minimum* size guarantees for the
> integral types. I'm not sure what they are, or whether they are
> specified as a number of bits, a number of bytes, or a range of values
> that must be accomodated.[/color]
They are specified by a range of values, but if look at the binary
representation of the values you can easily work out the minimum
number of bits, although the actual bit usage may be greater because
padding bits are allowed in all but the "char" types.
You can see the ranges for all the integer types, including the C
"long long" type that is not part of C++, yet, here:
http://www.jk-technology.com/c/inttypes.html#limits
You can easily work out the required minimum number of bits from the
required ranges:
char types, at least 8 bits
short int, at least 16 bits
int, at least 16 bits
long, at least 32 bits
long long (C since 1999, not official in C++) 64 bits
--
Jack Klein
Home:
http://JK-Technology.Com
FAQs for
comp.lang.c
http://c-faq.com/
comp.lang.c++
http://www.parashift.com/c++-faq-lite/
alt.comp.lang.learn.c-c++
http://www.contrib.andrew.cmu.edu/~a...FAQ-acllc.html