Mike Breuer wrote:
>
> >enum {
> > ROOM_DARK = (1 << 0),
> > ROOM_DEATH = (1 << 1),
> > ...
> >};
>
> I would use caution in converting anything that might go into a bitvector,
> especially if you eventually plan to expand it beyond the size of an
> integer (32 bits for most of us).
If you plan to expand beyond the limit of 32 bits, you will need a
compiler capable on handling long long variables. Those compilers (as
far as I know) expands the enum type storage size automatically. Try it:
#include "stdio.h"
void main(void) {
enum { AA = 0, AB, AC } first;
enum { BA = (1LL << 40), BB, BC } second;
printf("First enum has a size of %d bits.\n", sizeof(first)*8);
printf("Second enum has a size of %d bits.\n", sizeof(second)*8);
}
It gave to me (egcs-2.91.66):
First enum has a size of 32 bits.
Second enum has a size of 64 bits.
I don't know the behavior on other compiler capable on handling 64 bit
variables. Also for the C99 standard.
[]s
Juliano.
--
This isn't right. This isn't even wrong.
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/06/01 PST