1

Xcode プロジェクトで「BYTE_ORDER」マクロを使用したいのですが、どのヘッダーで定義されているかわからないため使用できません。

4

1 に答える 1

0

Xcode 4.3.X のインストールを調べると、" byte_order.h" ファイルがいくつかの場所にあることがわかります。

[/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform]:;!fi
find . -name byte_order.h -print
./Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/architecture/byte_order.h
./Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/machine/byte_order.h
./Developer/SDKs/MacOSX10.6.sdk/usr/include/architecture/byte_order.h
./Developer/SDKs/MacOSX10.6.sdk/usr/include/architecture/i386/byte_order.h
./Developer/SDKs/MacOSX10.6.sdk/usr/include/architecture/ppc/byte_order.h
./Developer/SDKs/MacOSX10.6.sdk/usr/include/machine/byte_order.h
./Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/architecture/byte_order.h
./Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/machine/byte_order.h
./Developer/SDKs/MacOSX10.7.sdk/usr/include/architecture/byte_order.h
./Developer/SDKs/MacOSX10.7.sdk/usr/include/architecture/i386/byte_order.h
./Developer/SDKs/MacOSX10.7.sdk/usr/include/machine/byte_order.h

#include <architecture/byte_order.h>byte_order マクロを取得するために、おそらく .c ファイルで" " を実行したいと思うでしょう。

実際の " BYTE_ORDER" はそれ自体を定義します。それはいくつかの特定の場所で定義されていますが、その定義方法は非常に特定の目的のために意図されているようです。たとえば、次のように定義します。

#define __DARWIN_BYTE_ORDER __DARWIN_LITTLE_ENDIAN
#define BYTE_ORDER  __DARWIN_BYTE_ORDER
./Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/i386/endian.h

カーネル拡張 (ドライバー) のみを対象としています。

そして、これは次のように定義します:

#     define BYTE_ORDER LITTLE_ENDIAN
#     define BYTE_ORDER BIG_ENDIAN
#  endif /* BYTE_ORDER */
#  define X_BYTE_ORDER BYTE_ORDER
./Developer/SDKs/MacOSX10.7.sdk/usr/X11/include/X11/Xarch.h

X11のもの(ewww)用です。

NXHostByteOrder" " ファイルで " " インライン関数を使用するbyte_order.hと、現在のホストのバイト オーダーが得られます。

于 2012-06-17T22:35:34.177 に答える