Re: GCC 4.0 GetKeys() and BigEndianLong for Intel
Re: GCC 4.0 GetKeys() and BigEndianLong for Intel
- Subject: Re: GCC 4.0 GetKeys() and BigEndianLong for Intel
- From: Eric Albert <email@hidden>
- Date: Wed, 15 Jun 2005 11:03:17 -0700
On Jun 15, 2005, at 10:29 AM, Ken Baer wrote: I've got some code that calls GetKeys( KeyMap theKeys ) to get the modifier keys state. Then I use a mask to test which of them are down. I get a compile error:
error: no match for 'operator&' in 'theKeys[1] & 2l'
First, I know that I need to find constants for the key masks, what are those masks? But now that KeyMap is an array of BigEndianLong rather than UInt32, the compiler can't find an operator & that works with it. What is the best way to deal with this in our new Universal Binaries world?
It's unfortunate that KeyMap was defined this way...it should've just been transparent to you, but we couldn't change it because it's been this way in the headers for a while.
Anyway, when building for little-endian systems (#if __LITTLE_ENDIAN__), you should read the BigEndianLong value, use OSSwapBigToHostInt32 or the swapping function of your choice to put its field into a regular int, and then use it the way you otherwise would. Also, I have a SHORT that I want to set the most significant bit on. Currently the code is
result |= 0x8000;
What's the rule of thumb to make it cross chip happy?
Leave it as is. As long as result is native-endian, it'll do the right thing.
-Eric
|
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden