|
|
Log In | Not a Member? |
Contact ADC |
| < Previous PageNext Page > |
Carbon関数のBitTst、BitSet、BitClr、およびPOSIXマクロのsetbit、clrbit、isset、isclrをCのビット単位演算子と混用しないでください。一貫してCarbonおよびPOSIX関数を使用し、Cのビット単位演算子を避ければ、コードは正しく機能します。ただし、CarbonおよびPOSIX関数は正しい種類のデータで使用することに留意してください。CarbonとPOSIXの関数は、バイト単位のトラバーサルを実行するので、1バイトより大きいデータ型を処理するとき、インテルベースのMacintoshでは問題を引き起こします。これらの関数は、エンディアン中立なバイトで構成される文字列へのポインタのみを対象にできます。整数値のビット操作を行う必要がある場合、BitTst(&int32, 5L)関数ではなく(int32 & (1 << 26))関数を使用します。
24ビットモードのテストにBitTst関数を使用すると、問題が生じることがあります。たとえば、以下のビットテストはfalseを返しますが、これはプロセスが24ビットモードで実行しているか、または少なくともコードが32ビットモードで実行していないことを示します。これと同等なPOSIXの関数も同じように動作します。
Gestalt(gestaltAddressingModeAttr, &gestaltResult); |
if (!(BitTst(&gestaltResult,31L)) ) /* 24 の場合 |
バイト順序が固定のデータへのポインタを渡せば、ビットテスト、セット、およびクリアの各関数を使用できます。このように使用すると、これらの関数はどちらのアーキテクチャでも同じように動作します。
詳細については、Core Servicesフレームワークの「ToolUtils.h」ヘッダファイルと『Mathematical and Logical Utilities Reference』を参照してください。
| < Previous PageNext Page > |
Last updated: 2006-03-08
|
Get information on Apple products.
Visit the Apple Store online or at retail locations. 1-800-MY-APPLE Copyright © 2007 Apple Inc. All rights reserved. | Terms of use | Privacy Notice |