Fortran文件中的Include语句

3

我有一个Fortran模块文件(filename.F),其中包含一条语句:

#include "module_io_domain_defs.inc"

我不太理解这个问题。为什么要用 "#" 符号?难道不应该只是 "

" 吗?
include "module_io_domain_defs.inc"

我知道在编译过程中,*.F文件会变成*.f90文件。如何理解上述语句以及编译过程是如何工作的?

cpp 预处理并非标准 Fortran,但一些用法(例如 OpenMP)会施加一些最低要求。以 .F 命名的源文件将被视为 .f 文件,因此默认为 f77 固定格式。在诸如 Windows 之类不区分 .F 和 .f 的操作系统上,只有那些选项比如 -cpp/fpp 才能调用 cpp 预处理器。因此,如果您希望预处理生成 .f90 文件,则应从 .F90 开始(在 Linux 上……)。 - tim18
既然你问了,通常情况下,cpp风格的预处理是由一个单独的程序完成的。它可能是C编译器提供的一个程序,也可能不是;例如,gfortran -E与gcc -E -traditional相同。-traditional表示忽略/的CPP。在Windows上,制作源文件的可见预处理副本只有在将其写入单独的文件夹时才有效。 - tim18
1个回答

4
# 表示 C 预处理指令。因此,#include 不是由 Fortran 编译器处理,而是由 C 预处理器 (cpp, ) 处理。使用大写的 .F 而不是小写的 f 通常告诉编译器在编译之前运行 cpp
主要区别在于通过 #include 包含的文件将再次被 cpp 处理,而仅通过 include 包含的文件在编译之前不会被任何东西处理。
如果编译器不能识别后缀中的大写字母 F,也可以通过传递标志(如 -cpp-fpp)来请求预处理器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接