私はWindows 32ビットアプリケーションを64ビットに移植しようとしていますが、後で全部をLinuxに移植することにします。プリプロセッサを使用してLinux上で64ビットビルドを識別するにはどうすればよいですか?
このコードには、32ビット版のコードをコンパイルする機能は、コードの32ビットバージョンをコンパイルする能力が必要ですが、アプリケーションで使用できるメモリの量に依存するセクションが含まれています下位互換性のために保存してください。
Windowsでは、適切なバージョンのコードがコンパイルされるように、それぞれのコードセクションをプリプロセッサステートメントにラップするだけです。
問題が発生したので、残念ながら私は、Linuxプラットフォームでのプログラミングに非常に少数の経験を持っている:
どのように私はLinuxプラットフォーム上の64ビットビルドを識別できるのですか?
私はこれをチェックする可能性のある(コンパイラー固有でないことが望ましい)プリプロセッサ定義がありますか?
ありがとうございます! GCC Manualによるとビョルン
100%移植可能な代替手段があります: '#if UINTPTR_MAX == 0xffffffff'(32bit)'#else'(64bitと仮定したり、他の可能性を試す)。 –
具体的には、 'uintptr_t'はC99ではオプションです。しかし、* Linux *はこの型の存在を強制しているように見えますが、 'sizeof(void *)== sizeof(long)' –