------- You are receiving this mail because: -------
You are on the CC list for the bug.

http://bugs.exim.org/show_bug.cgi?id=1049




--- Comment #24 from Zoltan Herczeg <[email protected]>  2011-11-15 11:34:03 
---
(In reply to comment #20)
> (In reply to comment #15)
> > > By the way, does anyone know a clever way of compile time endianness 
> > > check?
> > 
> > Don't you just set up an int and then cast a pointer to it as char * and 
> > then look at the bytes?
> > 
> I've found that using pointer casting can cause some ugly compiler warnings
> (mind you, I was dealing with doubles at the time). A cleaner way is using a
> union:
> 
> static const union { int i; char c; } order = { 1 }; /* initialisation assigns
> first union member */
> 
> You can then simply check:
> 
> if (order.c == 1) {
>    /* little endian */
> } else {
>    /* big endian */
> }
> 
> Both gcc and llvm/clang recognize this correctly and optimize out the unused
> case.

Thank you for the idea. I am not sure what other compilers do, so we probably
need to introduce a macro, which is doing the stuff above by default. Still it
allows different implementation if needed.


-- 
Configure bugmail: http://bugs.exim.org/userprefs.cgi?tab=email

-- 
## List details at https://lists.exim.org/mailman/listinfo/pcre-dev 

Reply via email to