我不明白为什么在 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语句不应该做同样的事情并将一些文本行添加到另一个文件吗?警告是什么意思?include
test.F
include
#include
Arch 和 Mac OS X 上的 gcc 12.2.0 以及 CentOS 上的 gcc 4.8.5 会发生这种情况。
答案1
预处理器#include指令包含的文件可以包含#defines等;编译器包含的文件 INCLUDE 语句必须仅包含 FORTRAN 语句。