Apple Developer Connection
Advanced Search
Member Login Log In | Not a Member? Contact ADC

< Previous PageNext Page >

ビットテスト、セット、およびクリア機能:CarbonとPOSIX

Carbon関数のBitTstBitSetBitClr、およびPOSIXマクロのsetbitclrbitissetisclrを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




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.
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