2009-11-18 8 views
8

Leopard上で実行している場合、あなたが何かを行うことができます。これは自分自身を答えていない私を発見したでしょう(最も重要)のSnow LeopardとSnow Leopardの64__LP64__ OS X - > Snow Leopard相当ですか?

は何

#if __LP64__ 
    #pragma message ("64 bit Leopard issue") 
#endif 

を聞く必要がありましたか?

答えて

7

__LP64__は、ビルドしているOS Xのバージョンに関係なく、64ビットデータモデルをビルドしているときはゼロではないgccプリプロセッサマクロです。非ゼロになる別のマクロは、64ビットIntelプロセッサ用にビルドするときは__x86_64__です。これらのマクロやその他のマクロの詳細については、developer.apple.comを参照してください。

XCodeプロジェクトの展開ターゲットを指定することができます。これは、アプリケーションが実行できる最小許容OSバージョンを指定します。この設定をコード内で活用して、条件付きでその一部を有効/無効にすることができます。詳細はthis mailing list postを参照してください。

+0

[GCCドキュメント](http://gcc.gnu.org/onlinedocs/gcc-3.4.6/cpp/Common-Predefined-Macros.html) – Chuck

+0

@fbrereto - もしX86_64 '64ビットのものについては、現在の場合は32ビットのものにデフォルト設定しますか? LP_64またはX86_64はWindowsおよびAMDプロセッサでも動作しますか(私のアプリケーションは両方のために構築されます)。そしてもしそうなら、私は 'X86_4なら'のようなものが必要でしょうし、アップルやWIN32なら内部に....私は正しく考えていますか? –

+0

@fibrereto - _WIN32と_WIN64、Apple __APPLE__は –

12

__LP64__は、「Leopard 64」の略語ではありません。それは "longsとポインタは64ビットです"の略です。それはLeopardの場合とまったく同じ状況でSnowLeopardに設定されています。

__LP64__は、ウィンドウが64ビット幅ではない別の64ビットモデルを使用するため、Windowsでは同じ動作をしません。代わりに、64ビットのウィンドウでは、longは32ビット幅でlong longで、ポインタは64ビット幅です。これは一般に「llp64」モデルと呼ばれます。

+0

@Stephenのように見えるので、OS XとLinuxでは__LP_64__を行い、Windowsでは__ILP_64__はありますか? –

+0

私はWindowsビルド環境に精通していません。うまくいけば、誰かが使用するプリプロセッサシンボルをあなたに教えてくれるはずです。しかし、もしWindowsがそのようなマクロを持っていたら、それは '__LLP64__'になります。 –

+0

[wikipediaでの64ビットモデルのニーモニックの便利な比較](http://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models) – t0rst

関連する問題