… | |
… | |
469 | { |
469 | { |
470 | /* the union code still generates code under pressure in gcc, */ |
470 | /* the union code still generates code under pressure in gcc, */ |
471 | /* but less than using pointers, and always seem to */ |
471 | /* but less than using pointers, and always seem to */ |
472 | /* successfully return a constant. */ |
472 | /* successfully return a constant. */ |
473 | /* the reason why we have this horrible preprocessor mess */ |
473 | /* the reason why we have this horrible preprocessor mess */ |
474 | /* is to avoid it in all cases, at leats on common architectures */ |
474 | /* is to avoid it in all cases, at least on common architectures */ |
|
|
475 | /* and yes, gcc defines __BYTE_ORDER__, g++ does not */ |
475 | #if __i386 || __i386__ || _M_X86 || __amd64 || __amd64__ || _M_X64 |
476 | #if __i386 || __i386__ || _M_X86 || __amd64 || __amd64__ || _M_X64 |
476 | return 0x44; |
477 | return 0x44; |
477 | #elif __BYTE_ORDER__ && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ |
478 | #elif __BYTE_ORDER__ && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ |
478 | return 0x44; |
479 | return 0x44; |
479 | #elif __BYTE_ORDER__ && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ |
480 | #elif __BYTE_ORDER__ && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ |