Re: compiler assert for sizeof(char)==1
On Sat, 5 May 2007, andrew_nuss@yahoo.com wrote:
Yes, but what if I am doing my own heap management and creating blocks
and doing pointer arithmetic on true byte values.
What's a "true byte value"? Do you mean octets?
Simple example:
enum { header_size = 16 };
char* p = static_cast<char*>(malloc(48));
p += header_size; // then do other stuff and return p
The point is that I need to be confident that I can move the pointer
to the malloc'ed object exactly 16 bytes. Is this trouble on some
platforms? Is there a proper assert for platforms where that won't
work?
If you want to ensure that a char is equivalent to an octet, the condition
you need to test is CHAR_BITS == 8. And this is trouble, for example on
some embedded platforms.
Of course, as far as C++ is concerned, you will move the pointer exactly
16 bytes. It's just that C++ might disagree with you about what a "byte"
is.
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]