私が維持しているアプリケーションでは、stdlibに影響を与えるファイル記述子の制限に関する問題が発生しました。この問題は、標準のlibの32ビット版にのみ影響します。32ビットプラットフォーム用の#ifdef
私は自分のコードの修正案を考案し、それを実装したいと思っていますが、32ビットの実行可能ファイル用にコンパイルするときだけです。コードが32ビットまたは64ビットのターゲット用にコンパイルされているかどうかを判断するために#ifdefすることができるプリプロセッサのシンボルは何ですか?
EDIT
申し訳ありませんが、言及しなかった、コードはほとんどがコンパイルのためにGCCを使用して、クロスプラットフォーム、Linuxでは、窓、Solarisおよびいくつかの他のUNIXフレーバーです。私がクロスプラットフォームで使用できるデファクトスタンダード?私はいくつかの定義「__ILP23」と「__LP64」彼らは働くことのように思える...議論hereを見つけた2
EDITは、UNIXプラットフォーム上の背景を説明しています。誰もこれらの定義を使用する経験はありましたか?これは使えるだろうか?
プラットフォームによって異なります。異なるOSは異なる#defineを使用します。あなたが運が良ければ、Boostは携帯用のラッパーをどこかに隠しています。しかし、それ以外の場合は、プラットフォーム固有のものを確認するだけで済みます。途中でどのプラットフォームを実行していますか? – jalf
質問を編集しました。コードは、主にAIX、HP-UX上で実行される部品を使用して、windows、solaris、linuxをターゲットにしています。 – veefu
#if sizeof(int)== 64 – mmmmmmmm