in reply to CHAR_BIT != 8
This isn't addressing specifically how Perl is compiled, but rather how Perl implements the notion of characters: Because of Perl's Unicode implementation, a Perl character isn't necessarily a single byte. Consider the following:
binmode STDOUT, ':encoding(utf8)'; my $cp = "\x{3a3}"; print "$cp\n"; # Prints an upper case sigma. print ord( $cp ), "\n"; # prints 931. print 0x00FF & ord( $cp ), "\n"; # prints 163. if( ord( $cp ) > 255 ) { print "Wide character.\n"; } if( ord( $cp ) != ( 0x00FF & ord( $cp ) ) ) { print "Wide character.\n"; }
If you're not dropping into XS, what application is there for getting at the actual value of CHAR_BIT during compilation? (Just to satisfy my own curiosity, and to learn something new).
Update: To be more clear in my final question: I do understand that the C implementation could possibly be compiled with CHAR_BIT != 8. We see checks for it within the XS code of Scalar::Vec::Util and Math::MPC, for example. But what I'm curious about is how it makes any difference from the perspective of a Perl script that doesn't use XS (aside from the potential that some XS modules will break because they're not checking like they should).
Dave
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: CHAR_BIT != 8
by ribasushi (Pilgrim) on Mar 08, 2013 at 16:20 UTC | |
by davido (Cardinal) on Mar 08, 2013 at 17:11 UTC |