10

gcc と gfortran を使用すると、コンパイラによって定義されたプリプロセッサ マクロのリストを生成できます (ouah の回答を反映するように編集されています)。

gcc -E -dM - < /dev/null

gfortran -cpp -E -dM /dev/null

それぞれ (少なくとも Linux では)。

Intel コンパイラの icc と ifort で同じことを行うにはどうすればよいですか? ifort の場合、これらのマクロがここで定義されていることは知っていますが、使用中の正確なマクロとその値は使用するコンパイラ オプションに依存するため、このリストを自分で生成できるようにしたいと考えています。また、 predefプロジェクトについても認識しています。

4

3 に答える 3

11

これを Intel コンパイラで使用します。

icc -E -dM - < /dev/null

で、プリプロセッサ オプションを使用する場合はgcc-Eオプションも必要であることに注意してください。-dM

于 2012-02-19T13:55:22.417 に答える
4

インテル Fortran コンパイラーの ifort では、以下を使用できます。

ifort -E -fpp /dev/null -dryrun 2>&1 | grep -e -D | cut -c 5-

ifort には-dM、icc、gfortran、gcc のような同等のフラグがないようです。

于 2012-03-16T09:19:02.777 に答える
1

については、を呼び出した場合と同じ結果が得られることgfortranに注意してください。これはおそらく役に立ちません。おそらく次のようなものが必要です(source):gfortran -E -dM - < /dev/nullgcc

gfortran -cpp -E -dM empty.f

gfortranこれにより、実際に事前定義されているもののより小さなリストが得られます。結果には、オペレーティング システムの特定に役立つ情報が含まれていない可能性が高いことに注意してください。通常、Fortran の場合、それらを自分で定義する必要があります。詳細については、こちらを参照してください。このようなことを試すこともできますが、実際にはその解決策には少し懐疑的です。また、そのリンクは、gfortranかつては現在よりも多くを定義していたことを意味します。

于 2014-09-26T18:49:37.007 に答える