私は実際にFortranで科学プロジェクトに取り組んでおり、使用される関数のセットは64ビットバージョンと32ビットバージョンに分かれています。さらに、一部の変数は、2つの異なるアーキテクチャの同じ関数に対して異なるプロパティで定義されています。たとえば、32ビットでは変数はINTEGER * 4ですが、64ビットではINTEGER*8です。
さて、C ++では、この投稿で説明されているように、ファイルの先頭で#ifndefを使用してこれを確認できることがわかりました。Fortranで利用できるものはありますか?どの可能な解決策を私に提案しますか?
プロジェクトは、さまざまなアーキテクチャを備えたWindowsおよびLinuxで実行する必要があることに注意してください。しかし、それでもどんな提案もいただければ幸いです!
編集:いくつかのコメントに返信するために、MKLライブラリの一部であるPARDISOソルバーを使用したいとします。呼び出すことができる2つのサブルーチンがあります:pardisoとpardiso_64。Pardisoには、pardisoがデータを処理できるようにする、マニュアル(ここでは6ページ)でPTと呼ばれる変数が必要です。32ビットバージョンではINTEGER*4ですが、64ビットバージョンではINTEGER*8です。基本的に、2つにメモリを割り当ててから、IFステートメントを使用して適切な変数を選択する必要はありません。
前処理でうまくいくと想像しますが、Fortranで作業している場合でも、Cプリプロセッサである必要がありますか?たとえば、IntelFortranはgcc/ gfortranと同じようにCプリプロセッサを呼び出しますか?