includeを使用してFortranコードをコンパイルするのが#includeと異なるのはなぜですか?

includeを使用してFortranコードをコンパイルするのが#includeと異なるのはなぜですか?

を使用しないと、一部のC行を含むテキストファイルがfortran77コードに含まれる理由を理解できません#include。基本ファイルに追加するいくつかのテキストを読む必要があるコード例を作成しましたtest.F

       program testInclude
       include 'includetest.txt'
       end program

includetest.txt含めるファイルには、次の内容が含まれます。


#define _TEST_
#ifdef _TEST_
       write(*,*) 'check'
#endif

これをコンパイルすると、gfortran test.F次の警告が表示されます。

includetest.txt:2:2:

    2 | #define _TEST_
      |  1
Warning: Illegal preprocessor directive
includetest.txt:3:2:

    3 | #ifdef _TEST_
      |  1
Warning: Illegal preprocessor directive
includetest.txt:5:2:

    5 | #endif
      |  1
Warning: Illegal preprocessor directive

の2行目の#include代わりに使用すると、警告は表示されません。 FortranステートメントとCステートメントは同じことを行い、他のファイルにいくつかのテキスト行を追加しないでください。警告とはどういう意味ですか?includetest.Finclude#include

これは、ArchとMac OS Xのgcc 12.2.0とCentOSのgcc 4.8.5で発生します。

答え1

プリプロセッサ#includeディレクティブに含まれるファイルには、#defineなどを含めることができます。コンパイラーに含まれるファイルのINCLUDEステートメントには、FORTRANステートメントのみを含める必要があります。

関連情報