为什么使用 include 编译 Fortran 代码与 #include 不同?

为什么使用 include 编译 Fortran 代码与 #include 不同?

我不明白为什么在 fortran77 代码中包含一个包含一些 C 行的文本文件,如果我不使用#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

如果我在 的第二行中使用#include而不是,则不会发出警告。难道 fortran语句和 C语句不应该做同样的事情并将一些文本行添加到另一个文件吗?警告是什么意思?includetest.Finclude#include

Arch 和 Mac OS X 上的 gcc 12.2.0 以及 CentOS 上的 gcc 4.8.5 会发生这种情况。

答案1

预处理器#include指令包含的文件可以包含#defines等;编译器包含的文件 INCLUDE 语句必须仅包含 FORTRAN 语句。

相关内容